我无法从OnRecieve方法访问DBHelper类。 如何从Broadcast Receiver访问Database Handler类,以便轻松完成CRUD操作
答案 0 :(得分:0)
不在BroadcastReceiver
中执行数据库I / O.在主应用程序线程上调用onReceive()
。如果在调用onReceive()
时您的UI恰好位于前台,那么当您的I / O正在进行时,该UI将被冻结。如果您花费大量时间(几秒钟),Android将在您正在进行的操作中间终止您的代码,作为“应用程序无响应”(ANR)对话框的背景等效。
如果您有需要由广播触发的磁盘I / O,数据库I / O,网络I / O等,请在IntentService
中执行该I / O,并且{{1调用onReceive()
来触发startService()
。如果此工作可能需要相当长的时间,请考虑使用IntentService
。