2012-05-15 85 views
2

我正在使用AlarmManager進行小部件更新事務。我有不同的間隔值像5,10,15,30分等等Android:AlarmManager不工作長時間間隔值

如何調用AlarmManager

alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(context, MyService.class); 
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);   

// Interval value, default 600 (600*1000 -> 10 min) 
Long repeat = Long.parseLong(prefs.getString("update_preference", "600")); 

// Set the manager 
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi); 

因此,如果用戶選擇了5分鐘或10分鐘,這沒關係。但是,如果沒有,我的意思是,用戶選擇較大的值,如15,30,60分鐘MyService不會盡快setRepetaing

有什麼區別或錯誤?

編輯:它立即工作< 30分鐘,但現在工作超過30分鐘與唯一的請求代碼。

回答

2

我認爲你必須使用唯一的請求的代碼的PendingIntent

Mulitple Instances of Pending Intent

+0

http://www.androiddiscuss.com/1-android-discuss/9703.html –

+1

http://stackoverflow.com/questions/3168484/pendingintent-works-correctly-for-the-first-notification-but -incorrectly-for- –

+0

嘗試了唯一的請求代碼,但仍然存在相同的問題。編輯的問題。 –

2
pi = PendingIntent.getService(context, 12345, i, PendingIntent.FLAG_UPDATE_CURRENT); 

這可能是工作,「0」是不是唯一的ID的最佳選擇。

+0

0可能不是最好的。但是,它可以工作5到10分鐘。我會試試看。謝謝。 –

+0

沒有任何改變,仍然沒有工作30和60分鐘。順便說一句,沒有差異值的類型。 –