Android五个进程等级
1、前台进程(Foreground process):
用户当前工作所需要的。一个进程如果满足下列任何条件被认为是前台进程:
正运行着一个正在与用户交互的活动(Activity对象的onResume()方法已经被调用)。
寄宿了一个服务,该服务与一个与用户交互的活动绑定。
有一个Service对象执行它的生命周期回调(onCreate()、onStart()、onDestroy())。
有一个BroadcastReceiver对象执行他的onReceive()方法。
在给定时间内仅有少数的前台进程存在。仅作为最后采取的措施他们才会被杀掉——如果内存太低以至于他们不能继续运行。
2、可视进程(Visible process):
没有任何前台组件,但是仍然能影响用户在屏幕上看到东西。一个进程满足下面任何一个条件都被认为是可视的:
寄宿着一个不是前台的活动,但是它对用户仍可见(它的onPause()方法已经被调用)。举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。
寄宿着一个服务,该服务绑定到一个可视的活动。
一个可视进程被认为是及其重要的且不会被杀死,除非为了保持前台进程运行。
3、服务进程(Service process):是一个运行着一个用startService()方法启动的服务,并且该服务并没有落入上面2种分类。虽然服务进程没有直接关系到任何用户可见的,它们通常做用户关心的事(诸如在后台播放mp3或者从网络上下载数据),因此系统保持它们运行,除非没有足够内存来保证所有的前台进程和可视进程。
4、后台进程(Background process):是一个保持着一个当前对用户不可视的活动(已经调用Activity对象的onStop()方法)(如果还有除了UI线程外其他线程在运行话,不受影响)。这些进程没有直接影响用户体验,并且可以在任何时候被杀以收回内存用于一个前台、可视、服务进程。一般地有很多后台进程运行着,因此它们保持在一个LRU(least recently used,即最近最少使用,如果您学过操作系统的话会觉得它很熟悉,跟内存的页面置换算法LRU一样。)列表以确保最近使用最多的活动的进程最后被杀。
5、空进程(Empty process):是一个没有保持活跃的应用程序组件的进程。保持这个进程可用的唯一原因是作为一个cache以提高下次启动组件的速度。系统进程杀死这些进程,以在进程cache和潜在的内核cache之间平衡整个系统资源。
一个进程的排名因为其他进程依赖它而上升。一个进程服务其它进程,它的排名从不会比它服务的进程低。例如,进程A中的一个内容提供者服务进程B中的一个客户,或者进程A中的一个服务绑定到进程B中的一个组件,进程A总是被认为比进程B重要。
因为一个服务进程排名比后台活动的进程排名高,一个活动启动一个服务来初始化一个长时间运行操作,而不是简单地衍生一个线程——特别是如果操作很可能会拖垮活动(例如出现ANR)。这方面的例子是在后台播放音乐和上传相机拍摄的图片到一个网站。使用服务保证操作至少有“服务进程”的优先级,无论活动发生什么情况。
本文来自:http://www.cnblogs.com/Rooty 转载请注明出处,谢谢合作。
分享到:
相关推荐
"Android笔记"显然是一份深入浅出的学习资料,旨在帮助初学者快速掌握Android应用开发的核心技能。 这份教程可能包含以下几个主要的知识点: 1. **Android环境搭建**:首先,你需要了解如何安装和配置Android ...
笔记内容丰富,深入浅出,无论你是初学者还是经验丰富的开发者,都能从中获得宝贵的启示。 首先,笔记从Android系统架构出发,讲解了Android的运行环境、操作系统层、应用程序框架层以及用户界面层等核心组成部分,...
《Android开发初级教程》和《android学习笔记》这两份文档,将深入浅出地讲解这些基础知识,包括XML布局文件的编写、Activity的生命周期、Intent的使用、数据存储、网络请求等。同时,它们还会涉及Android Studio的...
4. Android 深入浅出:包括 Android 的设计模式、架构设计、性能优化、安全机制等高级技术。 5. Android 开发入门与实践:涵盖 Android 开发的基础知识和实践操作,包括 Android Studio 的使用、 Android 项目结构...
3. **深入浅出Android** - **概述**:本书通过实例讲解了Android开发的核心概念和技术。 - **核心知识点**: - Android应用程序架构。 - UI组件与布局设计。 - 数据绑定与数据访问机制。 - 跨进程通信(IPC)...