0

アプリがバックグラウンドにあるときでもアラームを実行するようにスケジュールしようとしています。アプリがフォアグラウンドにある場合、以下のコードは正常に実行されます。ただし、戻るボタンを押すとすぐに、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 );
}
4

0 に答える 0