ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> Android进程级别与如何防止服务进程被回收

Android进程级别与如何防止服务进程被回收(1/3)

来源:网络整理     时间:2015-10-10     关键词:Exception,Activity

本篇文章主要介绍了"Android进程级别与如何防止服务进程被回收",主要涉及到Exception,Activity方面的内容,对于Android开发感兴趣的同学可以参考一下: 一、Android进程优先级 Android进程优先级具体如下,从高到低:1、Foreground process 前台进程下面几种情况属于前台进程: (1)...

一、Android进程优先级
Android进程优先级具体如下,从高到低:

1、Foreground process 前台进程

下面几种情况属于前台进程:
(1)Activity正在与用户进程交互(Activity的onResume已经被调用)
(2)与正在和用户交互的Activity绑定的Service
(3)Service运行在前台——Service中调用了startForeground函数
(4)Service正在执行生命周期回调函数(onCreate,onStart,onDestory)
(5)BroadcastReceiver正在执行onReceive方法

2、Visible process 可视进程

下面几种情况属于可视进程:
(1)Activity没有运行在前台,但是用户仍然可见(它的onPause方法被调用),例如:当前台Activity启动了一个Dialog,这样Dialog运行在前台,Activity仍然可见,属于可视进程。
(2)与一个可视的Activity绑定的服务所在的进程

3、Service process 服务进程
运行服务的进程被startService()启动,并且没有进入上面1中(3)、(4)这两种情况。例如,音乐播放、网络下载数据

4、Background process 后台进程
Activity不可见的时候,它的进程属于后台进程(Activity的onStop方法被调用)

5、Empty process 空进程
没有包含活动应用组件的进程为空进程,也就是进程的应用组件已经运行完毕。

下面我们进行一点总结:
1、假设当前进程只有Activity在运行:
Activity运行onResume后,代表它获取到焦点,此时Activity运行的进程属于前台进程
Activity运行onPause后,代表它失去了焦点,此时Activity运行的进程属于可视进程
Activity运行onStop后,代表它不可见,此时Activity运行的进程属于后台进程
当Android运行了onDestory后,代表它运行完毕,此时Activity运行的进程属于空进程

2、服务进程是针对startService启动的服务所在的进程

3、绑定的服务的进程优先级跟绑定它的Activity密切相关

二、如何放在服务进程被回收
在音乐播放器或者网络下载的时候,我们经常我启动一个服务,把它们的操作放在一个服务中进行。从上面我们可以看到,服务进程的级别并不算高,当内存紧张的时候很可能被回收掉,下面我们讨论一下如何防止服务进程被回收。

其实从上面的讨论中,我们已经看到了一种很好的解决方法,上面提到在服务中使用startForeground函数可以使服务进程变成前台进程,这是一种很好的方法。

下面我们来看看这个方法:
public final void startForeground (int id, Notification notification)
它的第一个参数为notification的一个唯一标志符
它的第二个参数为一个Notification

相关图片

相关文章