I am developing an Android app. In my app, I am deleting data from database when app is closed. So I open broadcast receiver onDestroy and delete data inside receiver. When I call delete method of database helper inside Activity, it is working. But when I call it inside receiver, it is not working.
This is my receiver:
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();
} }
This is delete method of database helper:
public void deleteCategories()
{
db = getWritableDatabase();
db.delete(CATEGORY_TABLE,null,null);
db.close();
}
This is how I delete data in the onDestroy event of my activity:
@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));
}
But data are not deleted.It is not throwing error as well. When I delete within activity. Delete method is working. How can I fix it?
you are not doing anything inside onReceive()
, you need to call refreshData()
:
@Override
public void onReceive(final Context context, Intent intent) {
refreshData(context);
}
or call deleteCategories()
method directly:
@Override
public void onReceive(final Context context, Intent intent) {
dbHelper = new DatabaseHelper(context);
dbHelper.deleteCategories();
}
in second case you dont need to define refreshData()
in the receiver class