4
我想要使用Alarm Manager來執行重複任務,同時啓動我的應用程序,但我在取消任務時遇到問題。如何在Alarm Manager中取消重複任務?
這是我的代碼:
服務:
public class SyncService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("#####", "It's alive!");
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
應用:
public class TerminalApplication extends Application {
PendingIntent pintent;
AlarmManager alarm;
@Override
public void onCreate() {
super.onCreate();
Intent intent = new Intent(this, SyncService.class);
pintent = PendingIntent.getService(this, 0, intent, 0);
alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Log.e("#####", "Starting alarm");
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, System.currentTimeMillis(), 5 * 1000, pintent);
}
@Override
public void onTerminate() {
clear();
super.onTerminate();
}
public void clear() {
alarm.cancel(pintent);
Log.e("#####", "Alarm cancelled");
}
}
這就是我所看到的日誌中:
07-09 14:53:30.399: ERROR/#####(1743): Starting alarm
07-09 14:53:52.690: ERROR/#####(1590): It's alive!
07-09 14:54:02.690: ERROR/#####(1590): It's alive!
07-09 14:54:12.690: ERROR/#####(1590): It's alive!
07-09 14:54:20.475: ERROR/#####(1743): Alarm cancelled
07-09 14:54:22.695: ERROR/#####(1590): It's alive!
07-09 14:54:32.696: ERROR/#####(1590): It's alive!
我使用的是相同的意圖取消t問,即使是同一個實例,但它不起作用。你可以幫我嗎?
是的,pintent保持絕對相同 –
我已經使用了符合我的要求的RTC_WAKEUP標誌,setrepeating和cancel按照預期工作。請嘗試更改此設備,並驗證它是否與您的功能相符,因爲API會說:「此警報不會喚醒設備;如果設備在睡着時關閉,它將不會在設備下次喚醒之前交付。 「 – user755
」對您有幫助嗎? – user755