Android进程的优先级问题

在安卓系统中:当系统内存不足时,Android系统将根据进程的优先级选择杀死一些不太重要的进程,优先级低的先杀死。进程优先级从高到低如下:

前台进程

  • 处于正在与用户交互的activity
  • 与前台activity绑定的service
  • 调用了startForeground()方法的service
  • 正在执行oncreat(),onstart(),ondestroy方法的 service。
  • 进程中包含正在执行onReceive()方法的BroadcastReceiver。

系统中的前台进程并不会很多,而且一般前台进程都不会因为内存不足被杀死。特殊情况除外。当内存低到无法保证所有的前台进程同时运行时,才会选择杀死某个进程。

可视进程

  • 为处于前台,但仍然可见的activity(例如:调用了onpause()而还没调用onstop()的activity)。典型情况是:运行activity时,弹出对话框(dialog等),此时的activity虽然不是前台activity,但是仍然可见。
  • 可见activity绑定的service。(处于上诉情况下的activity所绑定的service)

可视进程一般也不会被系统杀死,除非为了保证前台进程的运行不得已而为之。

服务进程

  • 已经启动的service

后台进程

  • 不可见的activity(调用onstop()之后的activity)

后台进程不会影响用户的体验,为了保证前台进程,可视进程,服务进程的运行,系统随时有可能杀死一个后台进程。当一个正确实现了生命周期的activity处于后台被杀死时,如果用户重新启动,会恢复之前的运行状态。

空进程

  • 任何没有活动的进程

系统会杀死空进程,但这不会造成影响。空进程的存在无非为了一些缓存,以便于下次可以更快的启动。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,803评论 25 709
  • 如何能让我们的应用能够在系统后台持续地运行是一个自Android从娘胎里出来时就议论不停的话题,而且这似乎成了一个...
    骏骏的简书阅读 1,133评论 1 19
  • 作者: 强波 (阿里云OS平台部-Cloud Engine)博客: http://qiangbo.space/...
    菜刀文阅读 3,016评论 1 15
  • 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单...
    晨起清风阅读 1,837评论 0 5
  • 上次的国创,这次的科研立项,上次的失败,这次的成功。稍稍有些感慨,爽神出现两次,成功两次,而且每次都是以第一名的成...
    zhangrrrrrr阅读 183评论 0 0