Android系统会尽可能的保持应用进程,但是当需要建立新的进程或者运行更重要的进程,便会回收优先级低一些的进程,这个就是lowmemorykiller的工作。而进程的优先级其实就是 /proc/pid/oom_adj
进程的优先级排序
- 前台进程(Foreground Process)
- 可见进程(Visible Process)
- 服务进程(Service Process)
- 后台进程(Background Process)
- 空进程(Empty Process)
前台进程
- 拥有 用户正在交互的 Activity(正处于 onResume中)
- 拥有 Service绑定到正处于 onResume的 Activity
- 拥有 Service 调用 startForeground 成为前台服务
- 拥有 Service 正在执行生命周期回调(onCreate、onStart、onDestroy)
- 拥有 BroadcastReceiver 正在执行 onReceive
可见进程
- 拥有 Activity 处于 onPause ,此时可见但是不可操作
- 拥有 Service 绑定到正处于 onPause的 Activity
服务进程
- 仅通过 startService 启动的 Service
后台进程
- 拥有 Activity 处于 onStop
空进程
- 不拥有任何活动的组件进程