Android中的前台进程

时间:2014-06-09 07:36:15

标签: android

关于流程生命周期,Android系统会尽可能长时间地维护应用程序流程,但最终需要删除旧流程以回收新内存或更重要流程的内存。要确定要保留哪些进程以及要杀死哪些进程,系统会根据进程中运行的组件和这些组件的状态将每个进程置于“重要性层次结构”中。首先消除具有最低重要性的进程,然后消除具有次低重要性的进程,依此类推,以恢复系统资源。

其中一个分类是:

前台流程:用户当前正在执行的操作所需的流程。如果满足以下任一条件,则认为进程处于前台:

1. It hosts an Activity that the user is interacting with.(the Activity's onResume() method has been called).

2. It hosts a Service that's bound to the activity that the user is interacting with.

3. It hosts a Service that's running "in the foreground" —the service has called startForeground().

4. It hosts a Service that's executing one of its lifecycle callbacks (onCreate(), onStart(), or onDestroy()).

5. It hosts a BroadcastReceiver that's executing its onReceive() method.

上面给出的场景的真实例子我可以问这个问题,因为它可以帮助我和其他人区分这种情况。

1 个答案:

答案 0 :(得分:2)

1)当前位于堆栈顶部的应用程序(用户正在使用的应用程序)

2)具有在任何服务上调用bindService的Activity的应用程序。这个想法是,如果它杀死了这项服务,它可能会丢失数据。一个例子是facebook应用程序,它有一个后台服务来经常获取数据。如果用户打开它,它将符合条件

3)这是一项声明其将数据提供给UI的服务。这方面的一个例子是Facebook应用程序,其中用户没有打开活动

4)这是一项刚开始或刚刚完成的服务。这将是纯粹的运气发生,但它基本上说它将尝试让它启动或完成干净之前杀死它

5)这是当前正在响应某个事件的任何应用。一个例子是一个短信应用程序,它只是收到传入短信的通知,需要处理它。它将被允许运行直到完成,因为否则可能会丢失数据。