通过RECEIVE_BOOT_COMPLETED上的广播接收器访问数据库

时间:2011-11-24 19:12:04

标签: android database broadcastreceiver

当手机完成启动时,我想根据数据库中的小时,分​​钟++信息自动重新注册一些警报。

我尝试用广播传播器做这件事,但它不起作用。 尝试在启动时访问数据库(DB)帮助程序类时崩溃。通过应用程序访问它时,DB帮助程序类工作正常。

这是可能的还是我必须使用某种替代解决方案,如服务?

1 个答案:

答案 0 :(得分:8)

您不希望在任何清单注册的广播接收器中执行数据库I / O.您不知道它需要多长时间(基于其他设备活动),并且您的onReceive()方法正在主应用程序线程上运行,因此您的时间有限且CPU占用空间很大。

请将控制权传递给IntentService以执行数据库I / O并安排警报。 IntentService会在后台线程上调用您的onHandleIntent(),这样您就可以花时间,onHandleIntent()完成后服务会自动消失。