android - 在 RECEIVE_BOOT_COMPLETED 上通过广播接收器访问数据库

标签 android database broadcastreceiver

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

我尝试使用广播接收者来执行此操作,但它不起作用。 在启动时尝试访问数据库 (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/

相关文章:

c# - C#中的备份和恢复

Android:从未收到广播 ACTION_MY_PACKAGE_REPLACED

android - Broadcastreceiver 开机后不工作

使用 XMPP 的 Android 推送通知

android - picasso 导致 OutOfMemory 错误

java - Android TextView 线条背景

android - PACKAGE_ADDED BroadcastReceiver 不起作用

java - 使用 Retrofit 2 下载文件时内存不足

mysql - 获取 MySql 数据库条目的近似值

database - 如何指向多对多关系中的现有条目?