Android类代表应用程序(即Android APP)的类,属于Android中的一个系统组件。
操作流程
1. 配置
Android的Application
类是为了保存全变量设计的基本类,可在AndroidManifest.xml
应用清单文件的<application>
标签的android:name
属性中进行配置,当application
应用或package
包被建立将引用对应的Application
类。
$ vim AndroidManifest.xml
<application
android:name=".MainApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</application>
Application
类继承自ContextWrapper
类, 每个Android APP运行时首先会自动创建Application
类并实例化Application
对象,有且只有一个,也就是说Application
类是单例模式类(singleton
)。
java.lang.Object
android.content.Context
android.content.ContextWrapper
android.app.Application
当创建全部变量时无需像J2SE那样创建public
权限的static
变量,直接在application
中去实现。只需调用Context
的getApplicationContext
或Activity
的getApplication
方法来获取application
对象,再做相应的处理。
android.app.Application
类包含4个公开的方法,Application
的生命周期等同于Android APP的生命周期。
-
void onConfigurationChanged(Configuration newConfig)
配置改变时触发 -
void onCreate()
真正的入口点,创建应用程序时触发。 -
void onLowMemory()
当后台程序已经终止资源但还匮乏时触发 -
void onTerminate()
当终止应用程序时触发,不保证一定被调用。
2. 创建
可以通过继承Application
类自定义Application
类和实例,Application
的实例形式为全局实例,即不同的组件(如Activity
、Service
)都可以获得Application
对象且都是同一个对象。
$ vim MainApplication.java
package com.jc.demo;
import android.app.Application;
public class MainApplication extends Application {
private int curIndex;
public int getCurIndex() {
return curIndex;
}
public void setCurIndex(int curIndex) {
this.curIndex = curIndex;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onTerminate() {
super.onTerminate();
}
}
3.使用
使用自定义的Application
类实例
private MainApplication app;
// 获取Application对象
app = (MainApplication) getApplication();
// 退出APP
app.exit.App();
当启动Application
时系统会创建一个进程ID,所有的Activity
都会在次进程上运行。在Application
创建时初始化全局变量,同一个应用的所有Activity
都可以获取到这些全局变量的值。换句话说,当在某个Activity中修改了全局变量的值,相同应用中其他Activity中的值也会改变。
适用场景
- 初始化应用程序级别的资源,如全局对象、环境配置变量等。
- 数据共享、数据缓存,如设置全局共享变量、方法等。
- 获取应用程序当前的内存使用情况,及时释放资源,从而避免被系统杀死。
- 监听应用程序配置信息的改变,如屏幕旋转等。
- 监听应用程序内所有
Activity
的生命周期
成员方法
onCreate()
- Android系统的入口是
Application
类的onCreate()
方法,默认为空实现。 -
onCreate()
方法会在Application
实例创建时调用
onCreate()
方法的作用
- 初始化应用程序级别的资源,如全局对象、环境配置变量、图片资源初始化、推送服务的注册等。
不要在onCreate()
方法中执行耗时操作,否则会拖慢应用程序的启动速度。 - 数据共享、数据缓存:设置全局共享数据,如全局共享变量、方法等。
共享数据只在应用程序的生命周期内有效,当应用程序被杀死时共享数据会被清空。因此推荐存储一些具备临时性的共享数据。