为什么我无法在android BroadcastReceiver中打开sqlite数据库?

时间:2015-11-06 17:44:12

标签: android

我是android的初学者,想在这段代码中打开数据库:

public class AlarmReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    try {

                SQLiteDatabase db;
                db=SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME,context.MODE_PRIVATE,  null);
            //...
    }catch(Exception e)
    {
    }
}


在这一行:

db=SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME,myContext.MODE_PRIVATE,  null);


我得到这个错误:
enter image description here


我该如何解决?谢谢。

1 个答案:

答案 0 :(得分:1)

使用context onReceive中的第一个参数来调用openOrCreateDatabase方法:

db=SQLiteDatabase.openOrCreateDatabase(DATABASE_NAME,
                                       context.MODE_PRIVATE,  null);
  

为什么我无法在android BroadcastReceiver中打开sqlite数据库?

由于广播生命非常少,因此无法在onReceive方法中执行长时间运行的任务,如API调用,数据库操作或任何其他花费更多时间的任务。

建议:而不是在onReceive内执行任务,而是使用IntentService来执行任务,并在任务完成时停止自我。