从 Android 的广播接收器中不工作的数据库中删除数据

Delete data from database not working in broadcast receiver in Android

我正在开发 Android 应用程序。在我的应用程序中,我在关闭应用程序时从数据库中删除数据。所以我打开广播接收器 onDestroy 并删除接收器内的数据。当我在 Activity 中调用数据库助手的 delete 方法时,它正在工作。但是当我在接收器中调用它时,它不起作用。

这是我的接收器:

public class InspectDataReceiver extends BroadcastReceiver {

    private DatabaseHelper dbHelper;

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

    }

    public void refreshData(final Context context,String type)
    {
        dbHelper = new DatabaseHelper(context);
        dbHelper.deleteCategories();

    } }

这是数据库助手的删除方法:

public void deleteCategories()
    {
        db = getWritableDatabase();
        db.delete(CATEGORY_TABLE,null,null);
        db.close();
    }

这就是我在 activity 的 onDestroy 事件中删除数据的方式:

@Override
    protected void onDestroy() {
        super.onDestroy();
        updateCacheData();
    }

    private void updateCacheData()
    {
        InspectDataReceiver receiver = new InspectDataReceiver();
        receiver.refreshData(getBaseContext(),getResources().getString(R.string.data_receiver_type_category));
    }

但是数据不是 deleted.It 也没有抛出错误。当我在 activity 内删除时。删除方法有效。我该如何解决?

你没有在onReceive()里面做任何事情,你需要调用refreshData():

@Override
public void onReceive(final Context context, Intent intent) {
    refreshData(context);
}

或直接调用deleteCategories()方法:

@Override
public void onReceive(final Context context, Intent intent) {
    dbHelper = new DatabaseHelper(context);
    dbHelper.deleteCategories();
}

在第二种情况下,您不需要在接收器中定义 refreshData() class