0

我有一個alarm(repeatingalarm)和BroadcastReceiver來處理它。該警報設置在我的activity中,其等待意圖參考BroadcastReceiver類。我的活動中有一個sqlite數據庫。我想在我的警報中更新我的sqlite數據庫,所以我需要從我的活動sqlite對象。這也是我的asynctask也需要我的警報執行。我怎樣才能做到這一點? 簡而言之,我想將我的活動對象傳遞給我的廣播構造函數,以便我可以使用我的sqlite實例。如何通過意圖傳遞一個對象

編輯:我注意到,如果我在我的活動中定義了BroadcastReciever,我可以參考它,就像MyActivity.this一樣簡單。有沒有其他辦法,而不是這個。

+0

你不能在'broadcastreceiver'中做太多的工作。 –

+0

定義我的活動中的所有類。我可以從他們訪問我的活動類對象嗎? –

+0

是的,您可以從任何類中調用任何方法接受其不更新和UI組件,並且必須從您的調用方傳遞應用程序上下文,並且可以像任何非Activity類一樣使用任何方法。 –

回答

1

你不能在'broadcastreceiver'中做太多的工作。

打算您必須創建一個服務類來執行此操作並從「broadcastreceiver」調用服務。然後在Service中寫入您的DataBase代碼。

在服務中,您可以通過getApplicationConext()創建'sqlite'DataBase對象。

此外,在服務內部必須爲您的工作創建分離線程或使用AsyncTask來執行您的數據庫操作。

+0

我需要重複報警,所以我需要broadcastreceiver沒有服務。 –

+1

是的你是廣播接收機的權利,但廣播接收機有限的時間做你的工作,最好的辦法是,你從廣播接收機打電話服務,然後你的服務內的任務, –

+0

服務可以只是一個方式來激勵/發射broadcastrceiver。 –