从 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
我正在开发 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