Android手機報警管理器在手機斷電時會丟失所有註冊的報警。偵聽BOOT_COMPLETED時,BroadcastReceivers會接收哪些上下文?
我用下面的廣播接收器在啓動時的Android觸發:
public class AlarmBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Cursor alarmCursor = MainActivity.dbHelper.loadAlarms();
// Iterate through every stored alarm and set those alarms.
// ....
alarmCursor.close();
}
}
}
當廣播接收機的onReceive是在系統引導時觸發,什麼情況下給定參數,該方法?我必須知道上下文,因爲我需要上下文來取消在該上下文中設置的警報。
我假設對MainActivity.dbHelper.loadAlarms()的調用不安全,因爲MainActivity在系統啓動時未初始化。或者它是安全的,因爲dbhelper和loadAlarms()都被初始化並聲明爲靜態的?
上下文的類型並不重要,更重要的是你不應該自己處理。在框架或Google庫中有多種解決方案。第一個選項:Job sheduler api。第二選項:使用GcmNetworkMamager計劃的任務。等... –