Application 的简单介绍和生命周期

简介: Application 的简单介绍和生命周期

每个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:通知 应用程序 当前内存使用情况(以内存级别进行识别)


0a2653c851af460fa595bd959398a8f1.png


应用场景


从这个类的方法可以看出,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


总结一下:

2d65d23f6d4748949b924e4057485923.png

以上就是Application的生命周期和简单的介绍。


相关文章
|
Java 应用服务中间件 Spring
SpringBoot Application事件监听的实现方案(动态写入yml)
SpringBoot Application事件监听的实现方案(动态写入yml)
SpringBoot Application事件监听的实现方案(动态写入yml)
|
安全 Java 应用服务中间件
struts2中Action的生命周期
struts2中Action的生命周期
114 0
|
Dubbo Java 应用服务中间件
实现 Application1 调用 Service1 | 学习笔记
快速学习实现 Application1 调用 Service1。
|
容器
使用Listener准备application作用域数据的小问题
在程序中,有些数据我们希望在程序启动的时候就准备好,并且只准备一次,放在application作用域中,这时候,我们通常会用Listener来准备这些数据。但是,用Listener准备application作用域的数据,在获取容器的时候会有一些小问题。
117 0
|
API 数据库 vr&ar
四大组件以及Application和Context的全面理解
1.概述 Context抽象结构 2.用处 1.Context的实现类有很多,但是ContextImpl(后称CI)是唯一做具体工作的,其他实现都是对CI做代理。
896 0
|
XML Java 数据格式