2

次の方法で 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);  
4

1 に答える 1