Android的5个进程等级(Process Levels)

1) Foreground Process
正处于Activity Resume() 状态

正处于与bound服务交互的状态

正处于服务在前台运行的状态 , (startForeground() 被调用)

Service生命周期函数正在被执行 ( onCreate() , onStart() , onDestroy())

BroadcastReceiver 正在执行onReceive()方法

杀死Foreground Process 需要用户响应-因为这个安全优先级是最高的

2) Visible Process
Activity 不在前端显示 , 但也没有完全隐藏,能够看得见,比如弹出一个对话框 。(Input Method)
一个bound到visible 或者 foreground 的activity的 Service

3) Service Process
正在运行的,不在上述两种状态的Service
4) Background Process
不可见状态的Activity进程,(onStop()被调用)
5) Empty Process
没有运行任何Components的进程,保留这个进程主要是为了缓存的需要


具体的应用:
1.不希望系统关掉sevice中断服务方法 :
如音乐sevice 启动sevice时调用startForeground()前台启动,不会被系统关掉,音乐会继续播放,除非通过人机交互手动确认关掉.

2.空进程是为了做缓存,内存里记录一些值,下次打开快。


3.如果又有Service又有Visible Activity怎么办?

if a process hosts a service and a visible activity, the process is ranked as a visible process, not a service process.
当进程既有Service 并且 有Visible Activity的时候,进程会被认为是Visible 进程 。
得出结论:优先级高的为准。

更多相关文章

  1. 禁止android进去休眠状态
  2. AIDL跨进程通信的使用
  3. Android Binder机制(三) ServiceManager守护进程
  4. 极光推送(守护进程)
  5. Android 8.1隐藏状态栏图标
  6. Android P 以及之后版本不支持同时从多个进程使用具有相同数据目
  7. android 进程内存查看
  8. AIDL跨进程通讯
  9. android中获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置

随机推荐

  1. Win下Mysql5.6升级到5.7的方法
  2. Mysql 5.7.17 winx64在win7上的安装教程
  3. 5分钟了解MySQL5.7中union all用法的黑科
  4. mysql innodb的监控(系统层,数据库层)
  5. 详解mysql基本操作语句命令
  6. MySql服务未知原因消失解决方法
  7. CentOS下RPM方式安装MySQL5.6教程
  8. DROP TABLE在不同数据库中的写法整理
  9. MySQL thread_stack连接线程的优化
  10. MYSQL 解锁与锁表介绍