当手机完成启动后,我想根据数据库中的小时、分钟++ 信息自动重新注册一些警报。
我尝试使用广播接收者来执行此操作,但它不起作用。 在启动时尝试访问数据库 (DB) 帮助程序类时崩溃。通过应用程序访问 DB 帮助程序类时工作正常。
这可能吗,还是我必须使用一些替代解决方案,例如服务?
最佳答案
您不想在任何 list 注册的广播接收器中执行数据库 I/O。您不知道需要多长时间(基于其他设备 Activity ),并且您的 onReceive()
方法在主应用程序线程上运行,因此您的时间有限并且 CPU 占用空间很大。
请将控制权交给 IntentService
以执行数据库 I/O 和安排警报。 IntentService
将在后台线程上调用您的 onHandleIntent()
,因此您可以花点时间,当 onHandleIntent()< 时服务会自动消失
完成。
关于android - 在 RECEIVE_BOOT_COMPLETED 上通过广播接收器访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261577/