次の方法で AlarmManager を作成します。特定の時間の後、サービスは stopSelf() で停止しますが、alarmmanager はサービスを再び開始します。サービス内で AlarmManager を停止するにはどうすればよいですか? アクティビティはもう実行されていません。サービス内で実行する必要があります。
AlarmManager を使用して定期的にサービスを開始するアクティビティ:
Intent i=new Intent(this, AppService.class);
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if((tb_runBG.isChecked()))
{
alarmManager.cancel(pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 *update_time, pi);
}
else
{
// From Activity it's no problem to stop the AlarmManager
alarmManager.cancel(pi);
stopService(new Intent(this, AppService.class));
}
AlarmManager を停止しようとするサービス:
Intent i=new Intent(this, volumeActivity.class);
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
// Her I should get the getSystemService from the Activity, but how??
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Following unfortunately not working ...
alarmManager.cancel(pi);
stopSelf();
残念ながら、それは機能していません。Servive は停止しますが、AlarmManager によって再度呼び出されます ...
編集:
以下も機能しません:
AlarmManager alarmManager = (AlarmManager) this.getBaseContext().getSystemService(Context.ALARM_SERVICE);
また
AlarmManager alarmManager = (AlarmManager) this.getApplicationContext().getSystemService(Context.ALARM_SERVICE);