怀疑BroadcastReceiver

时间:2014-10-03 21:21:56

标签: android broadcastreceiver alarmmanager android-alarms

我有一个警报,显然叫接收器和接收器,它必须做一些任务,可能需要一些时间来完成。但我听说onReceive()方法在几秒钟后被杀死。 我对我的代码进行了调试,然后停止了#34;在接收器内部,突然调试停止,它发生是因为onReceive()被杀了? 那么,我该怎么办?

1 个答案:

答案 0 :(得分:1)

  

但是我听说onReceive()方法在几秒后被杀死

正确。在主应用程序线程上调用onReceive()。你想尽快离开那个线程。如果您的UI恰好在收到广播时位于前台,您的UI将被冻结。即使您的UI不在前台,也不能在没有终止工作的情况下花费很长时间。

  

那么,我该怎么办?

将工作委派给IntentService,您可以在onReceive()中启动该服务。如果工作可能需要15秒以上,我建议使用WakefulBroadcastReceiver,这样您就可以确保设备保持清醒足够长的时间来完成工作。但即便如此,还有一段时间可以完成"应该以秒为单位测量,可能是几分钟。