android编程中,application这样的名词似乎变得那样的不常见,而让大家更为熟悉的是activity、intent、provider、broadcast和service。但其实android中的application也有着它自身的用处。
打开manifest文件,会看到有一个application配置标签,这就是有关application的使用了。那究竟application有什么用处呢?来看看SDK中是如何描述的:
Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml's < application> tag, which will cause that class to be instantiated for you when the process for your application/package is created.
就是说application是用来保存全局变量的,并且是在package创建的时候就跟着存在了。所以当我们需要创建全局变量的时候,不需要再像 j2se那样需要创建public权限的static变量,而直接在application中去实现。只需要调用Context的 getApplicationContext或者Activity的getApplication方法来获得一个application对象,再做出相应的处理。
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="second"
/>
</LinearLayout>
Se.java
package com.action;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Se extends Activity {
private TextView tv;
private MyApplication myApplication;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
myApplication = (MyApplication) getApplicationContext();
tv = (TextView) findViewById(R.id.tv);
tv.setText(myApplication.getName());
}
}
创建MyApplication类别继承Application
MyApplication.java
package com.action;
import android.app.Application;
public class MyApplication extends Application {
private String name;
private String age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
Main.java
package com.action;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Main extends Activity {
MyApplication myApplication;
private Button btn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myApplication = (MyApplication) getApplicationContext();
myApplication.setName("xingqiba");
myApplication.setAge("22");
myApplication.setSex("男");
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(Main.this, Se.class);
startActivity(intent);
}
});
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.action" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name=".MyApplication">
<activity android:name=".Main" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Se" />
</application>
</manifest>
一定要记得在AndroidManifest文件里配置Application
分享到:
相关推荐
### Android中用Application类实现全局变量 在Android开发过程中,我们常常需要在多个组件之间共享数据,例如存储用户的登录状态、应用配置等信息。通常情况下,开发者会利用`SharedPreferences`或者`...
在Android开发中,全局变量的使用常常是为了在不同的Activity之间共享数据。`Application`类是Android框架提供的一种机制,允许开发者创建一个与应用程序生命周期绑定的单例对象,从而实现全局变量的效果。本篇文章...
在Android应用开发中,"Android-Application被回收引发空指针异常分析(消灭全局变量)"是一个常见的问题,尤其对于新手开发者来说,可能会遇到这样的困惑。这篇文章主要探讨了当Application对象被系统回收后,如何...
主要介绍了详解Android中Application设置全局变量以及传值的相关资料,希望通过本文大家能够理解掌握这部分内容,需要的朋友可以参考下
本文实例讲述了Android编程之Application设置全局变量及传值用法。分享给大家供大家参考,具体如下: /** * 重写Application,主要重写里面的onCreate方法,就是创建的时候, * 我们让它初始化一些值,前段时间在...
而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。 首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候,初始化...
在这个`MyApplication`类中,我们定义了一个静态成员`instance`来保存`Application`实例,以及一个`sharedValue`来存储全局变量。`onCreate()`方法用于初始化`instance`,并提供`getInstance()`方法以便在其他组件中...
3 在传数据类中获取全局变量Application对象并设置数据 myApp MyApp getApplication ; myApp setName "jack" ; 修改之后的名称 4 在收数据类中接收Application对象 myApp MyApp getApplication ;">在...
在Android编程中,全局变量的使用常常涉及到应用的生命周期管理和数据持久化。本文将深入探讨在Android中如何正确地处理全局变量以及遇到的一些常见问题。 首先,全局变量通常用于在整个应用程序范围内共享数据。在...
在Android系统中,每个应用程序都默认关联一个`Application`类,它是程序的全局上下文,负责初始化全局变量、设置全局配置等。然而,在某些特定情况下,我们可能需要创建多个`Application`来处理不同的任务或者使用...
`Application`类提供了一个全局环境,开发者可以在这个环境中进行全局变量的初始化、资源的加载等操作,而不局限于某个特定的Activity或Service。在标题"Android操作Application的代码例子"中,我们将探讨如何利用`...
// 使用全局变量或方法 ``` #### 三、总结 本文从Android的运行机制入手,重点介绍了Application类的重要性和使用方法。通过本文的学习,读者应该能够更好地理解和运用Application类,从而提升Android应用程序的...
本文实例讲述了Android编程中context及全局变量的用法。分享给大家供大家参考,具体如下: 今天在研究context的时候,对application和activity context有了一定的了解,下面是从网上复制过来的资料 Application ...
在Android应用的开发中,开发者可以自定义一个名为`MyApplication`的类,继承自`Application`类,来存储全局变量或执行一些初始化操作。而"Activity"通常指的是继承自`android.app.Activity`的类,它们是用户界面的...
相较于Activity,`Application`的生命周期更长,全局唯一,因此常被用于全局变量的存储和初始化工作。 1. 数据传递: - **静态成员变量**:可以在`Application`类中定义静态变量,这些变量在整个应用程序的生命...
**Application** 是 Android 框架中的一个重要组件,与 **Activity**、**Service** 并列为四大组件之一。它在应用程序启动时由系统自动创建,并在整个应用生命周期中保持唯一性。 **特点:** - **单例性**:整个...
开发者可以重写`Application`的生命周期方法,如`onCreate()`,在这个方法中初始化一些全局变量或设置,这些数据在整个应用程序中都可以访问。 1. 创建自定义`Application`子类 要实现数据共享,我们可以创建一个...