每个app都有一个application实例,如果我们没有继承他,app就会创建一个默认的实例。
application有这个和app一样的长的生命周期,当app开启的时候,application的实例就会创建,app销毁的时候也会随之销毁。下面我们看一下他的使用方法。
public class Myapplication extends Application { final String TAG = "MyAppcliation"; @Override public void onCreate() { /** *在应用程序启动之前,在 创建任何其他应用程序*对象之前调用。实现应该尽可能快 *(例如使用状态的延迟初始化),因为 在此函数中花费的时间直接影响 在进程中启动*第一个活动,服务或接收器的性能。 *如果重写此方法,请务必调用super.onCreate()。 */ //这个函数是当程序刚开始的时候就会被调用,在程序刚开始的时候执行 Log.e(TAG, "onCreate: "); super.onCreate(); } @Override public void onTerminate() { Log.e(TAG, "onTerminate: "); super.onTerminate(); } @Override public void onConfigurationChanged(Configuration newConfig) { Log.e(TAG, "onConfigurationChanged: "); super.onConfigurationChanged(newConfig); } @Override public void onLowMemory() { Log.e(TAG, "onLowMemory: "); super.onLowMemory(); } @Override public void onTrimMemory(int level) { Log.e(TAG, "onTrimMemory: "); super.onTrimMemory(level); } }
1,首先,onCreate方法在Appliaction创建的时候调用,一般用于初始化一些东西,在这里不应该做过多的任务,如果任务过多就会直接影响我们第一个activity/service。如果你要重写这个方法必须调用super.onCreate()。
2,onTerminate :这个方法在程序结束的时候会调用,但是这个方法只用于在Android仿真机测试的时候,在android产品机上是不会调用的,所以这个方法并没有什么用。
3,onConfigurationChanged:重写此方法可以监听App一些配置信息的改变事件(如屏幕旋转)。当配置改变时会调用这个方法,这Manifest文件下的Activity标签里面配置 android:configChanges 相应的属性,会是activity配置在改变时不会冲洗,只会执行onConfigurationChanged()方法,如 android:configChanges="keyboardHidden|orientation|screenSize"可以是activity旋转是不重启.
4,onLowMemory:这个方法的作用是监听系统整体内存较低的时刻,当系统内存比较低时 会调用这个方法。
5,onTrimMemory:通知 应用程序 当前内存使用情况(以内存级别进行识别)
应用场景
从这个类的方法可以看出,Application类的应用场景有:
初始化 应用程序,如全局的对象,环境配置等。
数据共享,数据缓存,设置全局共享变量,方法等。
获取应用程序当前的内存使用情况,意识释放资源,从而避免被系统杀死。
监听应用程序配置信息的改变,如屏幕旋转等。
监听应用程序内所有Activity生命周期
具体使用:
1,继承Application类
public class Myapplication extends Application { final String TAG = "MyApplication"; public String My(){ return TAG; } }
2,在配置中定义Application的子类
<application ...... android:name=".Myapplication" tools:ignore="GoogleAppIndexingWarning"> </application>
3,使用自定义的Application类实例
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Myapplication application = (Myapplication) getApplication(); Log.e("onCreate", "onCreate: ;application.My()"); ......
结果如下:
E/onCreate: onCreate: ;MyApplication
总结一下:
以上就是Application的生命周期和简单的介绍。