Android中Application类的介绍与使用

1、Application类是什么

Application和Activity、Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,且只有一个,同一个程序里的所有Activity获得的Application对象都是同一个。

通常我们不需要指定一个Application,因为系统会给我们创建。如果要自己创建Application的话,创建一个类继承Application并在AndroidManifest.xml中的application标签进行注册,注册就是给application标签增加一个name属性,值为我们自己创建的Application类。

Application运行后会创建一个进程,此application的所有Activity都在这个进程上运行。在Application创建时初始化全局变量,则所有的Activity都可以获得这些全局变量,且在某一个Activity中改变某一个全局变量的值时,其他Activity中的此全局变量值也会改变。

Application类对象的生命周期是整个程序中最长的。等于程序的整个生命周期。它是全局的、单例的,所以可以进行:数据传递、数据保存、数据共享等操作。直到程序的所有Activity都被destory掉才会释放掉Application里面的内容。


2、自定义Application类

public class MyApplication extends Application{
    private static final String a = "yzq9958";
    private String b;
    @Override
    public void onCreate(){
      super.onCreate();
      setValue(a);
    }
    public void setValue(String value){
      this.b = a;
    }
    public void getValue(){
      return b;
    }
}

继承Application类主要是Override里面的onCreate()方法,对里面的全局变量进行初始化,然后该程序里的其他文件就可以对该变量进行使用了。

android.app.Application包里的onCreate()才是真正的Android程序的入口。

3、在AndroidManifest.xml文件中注册MyApplication。

<application>
    android:name="MyApplication"
</application>

4、应用

public class FirstActivity extends Activity
{
    private MyApplication app;    
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
        app = (MyApplication) getApplication(); // 获得MyApplication对象        
        Log.i("FirstActivity", "初始值=====" + app.getValue()); // 获取进程中的全局变量值,看是否是初始化值        
        app.setValue("Hello"); // 重新设置值        
        Log.i("FirstActivity", "修改后=====" + app.getValue()); // 再次获取进程中的全局变量值,看是否被修改        
        Intent intent = new Intent();
        intent.setClass(this, SecondActivity.class);
        startActivity(intent);
    }
}

使用Activity的getApplication方法或者Context的getApplicationContext()方法来获得Application对象,这个对象即代表了这个程序(或者叫应用),然后即可使用其成员变量和程序里面的主题、文件等资源。

public class SecondActivity extends Activity
{
    private MyApplication app;    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        app = (myApplication) getApplication(); // 获取应用程序
        Log.i("SecondActivity", "当前值=====" + app.getValue()); // 获取全局值
    }
}

最后AndroidManifest文件

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.test"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk
        android:minSdkVersion="8" />
    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:name="CustomApplication">
        <!-- 将我们以前一直用的默认Application设置成自定义的CustomApplication -->
        <activity
            android:name=".FirstActivity"
            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=".SecondActivity"
            android:label="@string/app_name">
        </activity>
    </application>
</manifest>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值