2012-10-18 34 views
1

我剛開始將我的iOS應用程序轉換爲Android。 但我遇到以下問題。Android通知不會在給定時間彈出

我創建了多個類,以便彈出警報。 但問題是,每5/10秒而不是給定的時間彈出警報彈出窗口。 我知道這事做用下面的代碼:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5000, 10000, pendingIntent); 

但奇怪的是,該代碼上面給定的時間不會觸發任何事情: (否則我可能已經刪除了剛剛過去的代碼行)

private void setRecurringAlarm(Context context) { 
    Calendar updateTime = Calendar.getInstance(); 
    updateTime.set(Calendar.HOUR_OF_DAY, 17); 
    updateTime.set(Calendar.MINUTE, 18); 

    Intent open = new Intent(this, AlarmReceiver.class); 
    open.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, open, PendingIntent.FLAG_CANCEL_CURRENT); 
    AlarmManager alarmManager = (AlarmManager) getSystemService(MyApp.ALARM_SERVICE); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5000, 10000, pendingIntent); 

該代碼有什麼問題,因爲鬧鐘不會在17:18彈出,而是每次在5或10秒後彈出。 我創建的用於顯示通知的服務並非在17:18開始顯示消息。 這是否與我的時區(阿姆斯特丹時間)有關?

回答

0

我想你傳遞的錯誤值爲.setRepeating。看看the documentation

它看起來對我像你說:首次從現在5秒 廣播,那麼重複後,每10秒

+0

是的,這就是它做什麼,現在我只是希望它在上面給出的特定時間關閉,但它不起作用 - 我更新了我的第一篇文章。 – user1756912

+0

因爲你正在設置updateTime,但實際上並沒有對它做任何事情。您傳遞給.setRepeating的第二個參數應該是多長時間,直到第一次廣播意圖。我想你想使用updateTime.getTimeInMillis()作爲第二個參數。現在使用的東西似乎是設備運行了多長時間(自上次重新啓動以來)+ 5秒。 – raydowe

+0

感謝您的提示,下面的代碼爲我工作! alarmManager.set(AlarmManager.RTC_WAKEUP,updateTime.getTimeInMillis(),pendingIntent); – user1756912