Android - AlarmClock 鬧鐘 特定時間 週期

會用到AlarmManager主要是安排應用程序在將來的某個時間運行

今天在開發時,將AlarmManager cancel後,AlarmManager 功能卻還會執行......這這這到底怎麼一回事?


我的程式碼
新增
        Intent intent = new Intent();
        intent.setAction("MyAlarmClock");
        PendingIntent sender = PendingIntent.getBroadcast(mContext, 0, intent, 0);

        long firstTime = SystemClock.elapsedRealtime();
        firstTime += firstSecond * 1000;

        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                firstTime, intervalSecond * 1000, sender);

停止
        Intent intent = new Intent();
        intent.setAction("MyAlarmClock");
        PendingIntent sender = PendingIntent.getBroadcast(mContext, 0, intent, 0);

        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        am.cancel(sender);


於是開始解決

先確認了語法 -> 無誤
開始大膽假設......
拿出其他設備驗證 -> 無發生

難道是底層?

於是下指令取得設備的Alarm
adb shell dumpsys alarm

得到以下結果
u0a386:com.bora.alarm +712ms running, 22 wakeups:
    +712ms 22 wakes 22 alarms, last -11s219ms:
      *walarm*:MyAlarmClock
u0a409:com.bora.alarmtest +2s206ms running, 34 wakeups:
    +2s206ms 34 wakes 34 alarms, last -17m20s383ms:
      *walarm*:MyAlarmClock


發現在系統有兩個一樣的AlarmClock,其實是有個測試版APP建了個一樣特徵的Alarm,原來如此!將其中一個APP移除,即可解決 ☺

實在是自己挖坑自己跳 哈哈哈
 ❤

留言

這個網誌中的熱門文章

Android - 輸入字串排除 使用InputFilter

Android - OkHttp3連線 post應用