2013-05-06 101 views
0

用戶可以創建不同的警報。因此,當用戶何時保持警報並且他可以保持多個警報並且將所有預定警報保持在數據庫中並向用戶展示以供進一步參考時,取決於用戶。以下是我的代碼。在重新啓動時重置警報

if("CREATEONCE".equals(strparam1)) 
    { 
     am.set(AlarmManager.RTC_WAKEUP, l2, pi);// l2 is time in millis 
    }else if("CREATEREPEAT".equals(strparam1)) 
     { 

    am.setRepeating(AlarmManager.RTC_WAKEUP, l2, 86400000 , pi); //l2 is time in millis 
    } 

所以這是設置報警的代碼。用戶可以設置多個報警。例如,他一次保留7.00 am的報警,8.00 am保留一次,9.00 am dialy。因此,對於once alarms代碼將轉到if塊,對於repeat daily,代碼將轉到else代碼中的其他塊。

如果上述3個報警由用戶設置爲6.00 am。如果在設置警報後立即重新啓動設備,則不會觸發整個警報。

所以我讀了很多關於這個的帖子,比如post1,post2。他們都只是使用broadcast receiver來知道設備已重新啓動。在廣播接收器收到設備重新啓動的提示後,是否需要重複上述代碼,方法是從sqlite數據庫獲取信息以使所有警報生效?如果是這樣,有人可以幫我從廣播接收機那裏做到這一點嗎?代碼片段讚賞

假設如果用戶設置50 alarms,獲得所有50個警報的信息並重新設置它們不是一個漫長的過程嗎?

回答

3

我不知道你是如何存儲你的報警。但是我建議爲最早的警報設置一個系統級警報就足夠了。然後,一旦觸發,再次設置警報,以便發出下一個最快的觸發警報。

我建議將您的AlarmSetting呼叫放入服務中,然後從廣播接收器中調用它。

public class AlarmResetReceiver extends BroadcastReceiver { 
    public void onReceive(Context context, Intent intent) { 
     //your code to set up alarms 
    } 
} 

也有在要在重新設置的鬧鐘了其​​他條件的清單

<receiver android:name=".receivers.AlarmResetReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.TIME_SET" /> 
      <action android:name="android.intent.action.TIMEZONE_CHANGED" /> 
      <action android:name="android.intent.action.LOCALE_CHANGED" /> 
     </intent-filter> 
    </receiver> 
+0

我設置所有報警每當用戶點擊保持提醒每個報警上面的代碼。如何跟蹤最早的警報。假設如果因爲用戶將他的設備保持在關閉模式而最早的警報不會觸發,那麼下一個警報就不會被觸發,對嗎? – rick 2013-05-06 10:45:18

+0

這是正確的,從廣播接收器,繼續並設置所有的警報,如我粘貼的代碼中所示。 – 2013-05-06 10:46:41

+0

如果是這樣的話,當你設置新的警報時,最早的警報實際上是過去的。你可以處理你認爲合適的方式。 – 2013-05-06 10:48:57