Application生命周期

一、什么是Application?

Android系统会为每个程序运行时创建一个Application类的对象且仅创建一个

(例如:打开微信安卓系统会为微信创建一个Application对象,再打开微博安卓系统又会为微博创建一个Application对象),所以Application可以说是单例 (singleton)模式的一个类。

Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例 的,所以在不同的Activity,Service中获得的Application对象都是同一个对象。所以可以通过Application来进行一些,数据传递,数据共享,数据缓存等操作。

二、Application的生命周期

1、onCreate() 程序创建的时候执行

2、onTerminate() 程序终止的时候执行

在模拟环境下执行。当终止应用程序对象时调用,不保证一定被调用,当程序是被内核终止以便为其他应用程序释放资源,那么将不会提醒,并且不调用应用程序Application对象的onTerminate方法而直接终止进程。

3、onLowMemory() 低内存的时候执行

好的应用程序一般会在这个方法里面释放一些不必要的资源,来应付当后台程序已经终止,

前台应用程序内存还不够时的情况。

4、onConfigurationChanged(Configuration newConfig) 配置改变时触发这个方法。

5、onTrimMemory(int level)程序在进行内存清理时执行

三、application 被杀死的情况分析

Android会根据运行在这些进程内的组件及他们的状态把进程划分成一个”重要程度层次”,进而决定在内存较低的时候杀掉哪个进程。其重要的程度按以下规则排序:

  1. 前端进程:

顾名思义,前端进程就是目前显示在屏幕上和用户交互的进程,在系统中前端进程数量很少,比如用户正在使用微信聊天,微信app此时为前端进程。而这种进程是对用户体验的影响最大,只有系统的内存稀少到不足以维持和用户的基本交互时才会销毁前端进程。因此这种进程重要性是最高的。

可视进程:

可视进程是一个被用户可见, 但没有显示在最前端 (onPause方法被调用时) 的Activity的进程。比如在微信聊天时候,输入文字是的搜狗输入法。这种进程被系统认为是极其重要的, 并且通常不会被杀掉, 除非为了保持所有前端进程正常运行不得不杀掉这些可见进程。

服务进程:

这是一个包含Service的进程, 该Service是由startService()方法启动的, 尽管这些进程用户不能直接看到,比如在后台播放mp3或是在后台下载上传文件。因此系统保持它们运行,除非没有足够内存来保证所有的前台进程和可视进程。

后台进程:

要说明的是,android里的后台进程是调用了OnStop()的,可以理解成用户暂时没有和这个进程交互的愿望,所以这里后台进程有点“待销毁”的意思。

空进程:

是没有持有任何活动应用组件的进程,保留这种进程的唯一理由是为了提供一种缓存机制,缩短他的应用下次运行时的启动时间。系统杀掉这些进程,是为了在这些空进程和底层的核心缓存之间平衡整个系统的资源。

学习参考:

https://blog.csdn.net/maican666/article/details/77257878

猜你喜欢

转载自blog.csdn.net/m0_37218227/article/details/82854144
今日推荐