2016-04-17 32 views
0

我正在開發一個Android應用程序。在我的應用程序中,我正在關閉應用程序時從數據庫中刪除數據。所以我打開廣播接收器onDestroy並刪除接收器內的數據。當我在Activity中調用數據庫幫助器的delete方法時,它正在工作。但是當我在接收器中調用它時,它不起作用。從Android數據庫中刪除數據不在廣播接收器中工作

這是我的接收器:

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(); 
    } 

這就是我在我的活動的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)); 
    } 

但是數據並沒有被刪除,它也沒有拋出錯誤。當我在活動中刪除時。刪除方法正在工作。我該如何解決它?

回答

1

你沒有做內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()秒情況

+0

但是,當我打開接收器時,如何傳遞活動的上下文? –

+1

這不會起作用。 OP實際上並沒有使用他們的'BroadcastReceiver'類作爲'BroadcastReceiver'。也就是說,他們並沒有真正向它播放。他們現在可以做一個簡單的舊類,它不會擴展任何東西。 –

+0

@MikeM。 OPPS,只是指出,OP創建接收器的實例 – Yazan