2017-08-07 93 views
-1

我正在開發一個應用程序,您可以安排您的時間,它會像Google日曆一樣及時提醒您。我使用AlarmManager類,並設置一個重複任務來每隔一分鐘檢查一次數據庫,並查看當時是否有任何警報。爲什麼使用鬧鐘管理器重複任務在android上不準確?

@Override 
public void onReceive(Context context, Intent intent) { 

    Calendar now = Calendar.getInstance(); 

    doRepeatingWorks(now.getTimeInMillis()); // Like Checking if one day passed to do some tasks 

    checkDbIfThereIsSomeSchedule(now); 
} 

而且我把這個啓動報警經理:

public void setAlarm(Context context) { 
      AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
      Intent intent = new Intent(context, AlarmReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), G.ALARM_CHECK_INTERVAL_MILIS, pendingIntent); 
} 

但它是不準確的,有時我想出這個任務殺手級應用殺死我報警,並使其完全沒有價值。

雖然使用foregroundService會消耗電量,但它會隨用戶的通知而變得異常敏感。

是否有任何解決方案或替代方案來解決這個問題?

+0

請發佈您的代碼 –

+0

如果您只有一分鐘的間隔時間然後使用'Handler' –

+0

@BipinGawand查看更新請 –

回答

2

我用AlarmManager類,並設置重複任務,檢查數據庫每隔一分鐘,看看是否有對時間或任何警報不

這是一個真正糟糕的做法。這種行爲正是爲什麼在Android 6.0中添加打盹模式和應用程序待機的原因。

是否有此問題的任何解決方案或替代方案?」

時間表第一事件報警事件。當你得到控制,通知用戶有關事件,然後計劃對報警事件如果用戶添加比第一個事件更早的新事件,則取消先前的鬧鐘併爲新的第一個事件安排一個鬧鐘。

+0

它是否會爲任務致命問題進行任何更改?它更準確嗎? –

+0

@Mohammad:在大多數設備上,不管你如何使用AlarmManager,無論你認爲「任務殺手」對警報沒有影響。在少數設備上,製造商已經發布了預裝的「任務殺手」,這些設備寫得很差,取消了警報,可能是作爲完整的「強制停止」實施的一部分。對此你無能爲力。 – CommonsWare

+0

是啊,像華碩標籤。關於您的解決方案,1)爲什麼它更好,2)每次數據庫更改時,是否可以清除所有警報並一起構建所有可用日程安排警報的列表? –