アプリがバックグラウンドにあるときでもアラームを実行するようにスケジュールしようとしています。アプリがフォアグラウンドにある場合、以下のコードは正常に実行されます。ただし、戻るボタンを押すとすぐに、unregisterReceiver() への呼び出しが欠落していることを示唆する「漏れたインテント レシーバー エラー」が表示されます。と に追加しようとしunregisterReceiver(receiver)ましonStop()たonPause()が、引き続き同じエラーが発生します。どんな助けでも大歓迎です!
また、補足質問ですが、最終的に受信機の登録を解除する方法を見つけた場合、アラームがトリガーされなくなりますか? ありがとう。
// Alarm
public void SetAlarm()
{
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override public void onReceive( Context context, Intent _ )
{
// code to run when alarm hits
context.unregisterReceiver( this ); // this == BroadcastReceiver, not Activity
}
};
this.registerReceiver( receiver, new IntentFilter("com.blah.blah.somemessage") );
PendingIntent pintent = PendingIntent.getBroadcast( this, 0, new Intent("com.blah.blah.somemessage"), 0 );
AlarmManager manager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
// set alarm to fire 5 sec (1000*5) from now (SystemClock.elapsedRealtime())
manager.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000*10, pintent );
}