Android中的Application类在应用程序中的应用

Application类html

每次应用程序运行时,应用程序的Application类都保持实例化状态(都会持有该Application实例)。与Activity不一样的是,配置改变并不会致使应用程序重启。在应用程序内部,经过扩展Application类,能够完成如下三项工做:java

1. 对Android运行时(接收到)广播的应用程序级别事件(如低内存事件广播)做出相应;android

2. 在应用程序组件之间传递对象(应用程序内部的多个Activity之间,或其余组件之间);缓存

3. 管理和维护多个应用程序组件使用的资源;app

当在Manifest中注册了Application实现之后,它会在建立应用个程序进程的时候获得实例化。Application的实如今本质上是单态的,而且应该做为单态进行实现,以便提供对其方法和成员变量的访问。ide

如何使用Application?如何自定义Applicaton类?this

自定义的Application类须要使用单例模式被建立,并在Manifest文件中指定该自定义的类。spa

在Manifest文件中指定该自定义Application类:设计

    <application
        android:name=".DemoApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|screenSize|keyboard"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

此时,应用程序在启动时,Application的实现将会被实例化。htm

在使用时,建立Application实例,部分代码以下:

public class DemoApplication extends Application {
    private static final String TAG = DemoApplication.class.getSimpleName();
    // DemoApplication使用单例模式使用
    private static volatile DemoApplication singletonInstance;
    public static DemoApplication getInstance() {
        return singletonInstance;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        LogUtil.d(TAG, "onCreate running...");
        singletonInstance = this;
    }

建立新的状态变量和全局变量,以便从应用个程序组件中进行访问:

    /**
     * <功能描述> 获取全局的状态变量
     * 
     * @return void [返回类型说明]
     */
    private void getGlobalStateValue() {
    }
    /**
     * <功能描述> 设置全局的状态变量
     * 
     * @return void [返回类型说明]
     */
    private void setGlobalStateValue() {
    }

以上方法用于维护应用程序状态或实现共享资源,可是一种松散耦合的设计。

Application类中的其余方法有什么做用?

Application类为应用程序的建立和终止、低可用内存和配置改变提供了事件处理程序。经过覆写方法实现,应用程序行为。

    @Override
    public void onCreate() {
        // 建立应用程序时调用,用于实例化应用程序单例,建立和实例化应用程序状态变量或共享资源
        super.onCreate();
        LogUtil.d(TAG, "onCreate running...");
        singletonInstance = this;
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        // 配置改变时,应用程序不会被终止和重启,而是回调方法
        super.onConfigurationChanged(newConfig);
        LogUtil.d(TAG, "onConfigurationChanged running...");
    }
    @Override
    public void onLowMemory() {
        // 可用于清空缓存或者释放没必要要的资源
        super.onLowMemory();
    }
    @Override
    public void onTrimMemory(int level) {
        // API 13被引入,Android系统认为须要减小应用程序内存开销时调用
        super.onTrimMemory(level);
    }

应用程序在启动时,会默认启动一个Activity,但这个Activity必须符合必定的规范:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

该Activity被应用程序启动器使用,必须包含一个监听MAIN动做和LAUNCHER分类的intent-filter。

相关文章
相关标签/搜索