我有一个应用程序,它有一个侦听特定意图的广播接收器,然后执行一些代码。这个被执行的代码是否需要在它自己的独立服务中,或者广播接收器是否会启动它自己的线程?
答案 0 :(得分:2)
当前正在执行BroadcastReceiver的进程(即当前在其onReceive(Context,Intent)方法中运行代码)被认为是一个前台进程,除非在极端内存的情况下,系统将继续运行压力。
从onReceive()返回后,BroadcastReceiver不再处于活动状态,其托管过程与其中运行的任何其他应用程序组件一样重要。这一点尤其重要,因为如果该进程只托管BroadcastReceiver(用户从未或最近没有与之交互的应用程序的常见情况),那么从onReceive()返回时,系统会认为其进程为空并且积极地杀死它使资源可用于其他更重要的过程。
这意味着对于运行时间较长的操作,您通常会将一个Service与BroadcastReceiver结合使用,以便在整个操作期间保持包含进程处于活动状态。
有关详细说明,请查看:
http://developer.android.com/reference/android/content/BroadcastReceiver.html