Android-四种进程类型

来源:互联网 发布:网购数据 编辑:程序博客网 时间:2024/06/16 09:04

程序与进程

程序:存储在磁盘上的可运行的代码和数据的集合,是个静态的概念
进程:程序的执行过程,是操作系统进行资源分配的基本单位,是个动态概念
程序由一个或多个相互协作的进程组合而成。

进程的创建

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

进程的销毁

进程什么时候会销毁呢?进程的销毁场景有两种,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()且已返回)。
系统如有内存需要,可随意杀死。

原创粉丝点击