android - 一个应用程序可以只包含一个广播接收器吗?

标签 android broadcastreceiver

我有一个应用程序,它有一个广播接收器,用于监听特定 Intent ,然后执行一些代码。这段被执行的代码是否需要在它自己单独的服务中,或者广播接收器是否会启动它自己的线程?

最佳答案

当前正在执行 BroadcastReceiver 的进程(即当前正在运行其 onReceive(Context, Intent) 方法中的代码)被认为是前台进程,将由系统保持运行,除非出现极端内存情况压力。

一旦您从 onReceive() 返回,BroadcastReceiver 就不再处于 Activity 状态,并且它的托管进程仅与其中运行的任何其他应用程序组件一样重要。这一点特别重要,因为如果该进程仅托管 BroadcastReceiver(用户从未或最近没有与之交互的应用程序的常见情况),那么在从 onReceive() 返回时,系统将认为其进程为空并主动终止以便资源可用于其他更重要的流程。

这意味着对于运行时间较长的操作,您通常会结合使用 Service 和 BroadcastReceiver,以在整个操作期间保持包含进程处于 Activity 状态。

更多解释请查看:

http://developer.android.com/reference/android/content/BroadcastReceiver.html

关于android - 一个应用程序可以只包含一个广播接收器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011367/

相关文章:

android - 如何从HEX获取正确的血糖测量值

android - 在 Android 上检测按钮长按

android - 关于 WakefulBroadcastReceiver 的困惑

android - 菜单项不可见

android - BroadcastReceiver 不工作的自定义 URL 方案 (ERR_UKNOWN_URL_SCHEME)

android - 如何在通话开始时播放音频文件?

android - 如何在模拟器中测试 BOOT_COMPLETED 广播接收器

android - 在 Android 中的 GridView 图像上设置文本

android - 获取 SQLiteCantOpenDatabaseException

android - 休息 API Android 应用程序