Androidのアラームマネージャは、電話の電源が切れたときに登録されているすべてのアラームを失います。BOOT_COMPLETEDを聞くときにBroadcastReceiversはどのコンテキストを受信しますか?
私はアンドロイドの起動時にトリガするために、次の放送受信機を使用し:
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が初期化されないため、MainActivity.dbHelper.loadAlarms()の呼び出しが安全でないと仮定しています。または、dbhelperとloadAlarms()はすべて初期化され、静的宣言されているので安全ですか?
コンテキストのタイプは重要ではありません。さらに重要なのは、あなた自身で処理するべきではないということです。これには、フレームワークやGoogleライブラリに複数のソリューションがあります。最初のオプション:Job sheduler api。第2のオプション:GcmNetworkMamagerを使用してスケジュールされたタスク。その他... –