私のアプリでは、繰り返し AlarmManager を使用しています。タイマーごとにクラスを作成しました。アプリの別のクラスでそのタイマーをキャンセルする必要があるため、静的と宣言しました。
コードは次のとおりです。
public class TimerSyncOff {
public static final String intentExtra = "SyncOff";
public static void SetAlarm(Context context)
{
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, getIntent(), PendingIntent.FLAG_UPDATE_CURRENT);
long trigger = 800000;
long interval = 900000;
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, trigger,interval, pi);
}
public static void Stop(Context context)
{
try{
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, getIntent(), PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pi);
}catch (Exception e){}
}
private static Intent getIntent(){
Intent i = new Intent(intentExtra);
return i;
}
アプリを実行した直後にタイマーをキャンセルしようとすると、これは正常に機能します。しかし、実行した日のようにキャンセルしようとすると、エラーは発生しませんが、タイマーは停止せず、実行を続けます。私は何か間違ったことをしていますか?ありがとう!