android 应用生命周期 及应用重要性
android的一个特性:android应用的生命周期不受应用本身控制,而是由系统本身来决定。当系统内存不足时,为了确保当前应用的运行,系统会干掉某些进程,释放内存。那么问题来了:系统会不会干掉我的应用进程呢?它依据什么来干掉进程呢?手机中装了这么多应用,它会率先干掉哪些进程呢?
这就需要了解下"android应用的重要性",应用的重要性(按优先级别)分为:
1 前端进程:有两种,一种简单的理解就是当前正在与用户交互的Activity所在的进程;另外一种就是存在广播接收器onReceiveon方法正在运行的进程。(只有当内存低到不够这些进程可用的时候,才会被干掉,这种情况发生的概率最小)
2可视进程:拥有一个可以看见的,但是却没有在最前端显示的Activity。最常见的就是:在一个Activity中弹出了一个Dialog.(只有前端进程所需内存不足时,才会被干掉,发生概率大于前端进程)
3服务进程:启动Service的进程。(只有当前端进程和可视进程所需内存不足时,才会被干掉,发生概率大于可视进程)
4后台进程:简单的理解所有的Activity对用户不可见了。(当前三类所需内存不足时,后台进程就会被干掉,发生概率大于服务进程)
5空进程:有任何活动的应用组件的进程。重要性最低,率先将会被干掉。
那么,我开发的应用到底属于哪一类进程呢?举个简单的例子:
1如果你的应用当前正在与用户交互,那么就属于前端进程;2如果按了HOME键,假如应用中有启动的服务,那就属于服务进程,没有的话那就是后台进程。
应用不会被系统干掉,这是不可能的。因此,在开发应用的时,对组件的恰当使用可间接的提高应用本身的重要性,从而降低应用被率先干掉的概率,个人觉得这是我们设计开发应用时,需要注意的一点。
更多相关文章
- 从AIDL开始谈Android进程间Binder通信机制
- Android跨进程通信:详解 Binder机制原理
- 【Android(安卓)并发编程】从进程的角度分析app的“生”与“死”
- Android中实现对/system/bin/surfaceflinger进程进行拦截和注入
- 360面试总结(Android)
- Android的系统启动流程和应用启动流程
- android studio 中aidl文件的使用并且实现跨进程的通信
- Android学习札记53:详解Android中的进程间通信机制Binder系列文章
- Android中的进程间通信(IPC机制)