当手机完成启动时,我想根据数据库中的小时,分钟++信息自动重新注册一些警报。
我尝试用广播传播器做这件事,但它不起作用。 尝试在启动时访问数据库(DB)帮助程序类时崩溃。通过应用程序访问它时,DB帮助程序类工作正常。
这是可能的还是我必须使用某种替代解决方案,如服务?
答案 0 :(得分:8)
您不希望在任何清单注册的广播接收器中执行数据库I / O.您不知道它需要多长时间(基于其他设备活动),并且您的onReceive()
方法正在主应用程序线程上运行,因此您的时间有限且CPU占用空间很大。
请将控制权传递给IntentService
以执行数据库I / O并安排警报。 IntentService
会在后台线程上调用您的onHandleIntent()
,这样您就可以花时间,onHandleIntent()
完成后服务会自动消失。