当手机启动完成后,我想根据数据库中的小时、分钟++信息自动重新注册一些警报。
我试着用BroadcastReveiver做这个,但是不行。
尝试在启动时访问数据库(DB)帮助程序类时崩溃。db helper类在通过应用程序访问它时可以正常工作。
这可能吗?还是我必须使用其他解决方案,如服务?

最佳答案

您不想在任何清单注册的广播接收器中执行数据库I/O。您不知道需要多长时间(基于其他设备活动),而且onReceive()方法正在主应用程序线程上运行,因此您的时间有限,CPU占用空间很大。
请将控制权传递给IntentService,以便执行数据库I/O和调度警报。IntentService将在后台线程上调用您的onHandleIntent(),因此您可以占用所需的时间,当onHandleIntent()完成时,服务将自动消失。

09-25 22:14
查看更多