Android进程分类

进程的创建

当程序启动运行时,系统就会为之创建相应的进程。在进程当中,调用系统资源,执行程序的逻辑。

进程的销毁

进程什么时候会销毁呢?进程的销毁场景有两种,1.程序不需要继续执行代码,运行结束;2.系统为回收内存,强制销毁。

进程类型

系统强制销毁进程时,面临一个问题:系统当中可能会运行多个进程,销毁哪些进程合适呢? 这就是我们要讨论的进程的优先级问题。进程被系统强制销毁时,是按照进程的优先级进行的。而进程的优先级主要和应用包含的组件相关。进程优先级从高到低可分为四种:前台进程可视进程服务进程缓存进程

前台进程(foreground process):需要用户当前正在进行的操作。一般满足以下条件:

  1. 屏幕顶层运行Activity(处于onResume()状态),用户正与之交互
  2. 有BroadcastReceiver正在执行代码
  3. 有Service在其回调方法(onCreate()、onStart()、onDestroy())中正在执行代码
    这种进程较少,一般来作为最后的手段来回收内存

可视进程(visible process):做用户当前意识到的工作。一般满足以下条件:

  1. 屏幕上显示Activity,但不可操作(处于onPause()状态)
  2. 有service通过调用Service.startForeground(),作为一个前台服务运行
  3. 含有用户意识到的特定的服务,如动态壁纸、输入法等
    这些进程很重要,一般不会杀死,除非这样做可以使得所有前台进程存活。

服务进程(service process):含有以startService()方法启动的service。虽然该进程用户不直接可见,但是它们一般做一些用户关注的事情(如数据的上传与下载)。
这些进程一般不会杀死,除非系统内存不足以保持前台进程和可视进程的运行。
对于长时间运行的service(如30分钟以上),系统会考虑将之降级为缓存进程,避免长时间运行导致内存泄漏或其他问题,占用过多RAM以至于系统无法分配充足资源给缓存进程。

缓存/后台进程(cached/background process):一般来说包含以下条件:

  1. 包含多个Activity实例,但是都不可见(处于onStop()且已返回)。
    系统如有内存需要,可随意杀死。

引用自CSDN——Android-四种进程类型

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容