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

Bjo*_*orn 3 database android broadcastreceiver

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

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

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

Com*_*are 8

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

请将控制权交给一个IntentService用于执行数据库I/O并安排警报的控件.该IntentService会打电话给你的onHandleIntent()后台线程,这样你就可以把你所需要的时间,该服务将自动消失时onHandleIntent()完成.