Android: AlarmManager не работи с дълги интервални стойности

Използвам AlarmManager за транзакции за актуализиране на приспособления. Имам различни стойности на интервали като 5, 10, 15, 30 минути и т.н.

Как да се обадя на 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 минути с уникални кодове за заявки.


person Ogulcan Orhan    schedule 15.05.2012    source източник


Отговори (2)


Мисля, че трябва да използвате уникален код на заявка в PendingIntent

Множество случаи на изчакващо намерение

person Dheeresh Singh    schedule 15.05.2012
comment
stackoverflow.com/questions/3168484/ - person Dheeresh Singh; 15.05.2012
comment
Опитах уникални кодове за заявки и все още има същия проблем. Редактиран въпрос. - person Ogulcan Orhan; 15.05.2012
comment
използвали ли сте i.setAction(Long.toString(System.currentTimeMillis())) във връзка с използването на FLAG_UPDATE_CURRENT като споменаване в stackoverflow.... - person Dheeresh Singh; 15.05.2012

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

Това може да работи, "0" не е най-добрият избор за уникален идентификатор.

person Thkru    schedule 15.05.2012
comment
0 може да не е най-добре. Но работи за 5 и 10 минути. Аз ще го пробвам. Благодаря ти. - person Ogulcan Orhan; 15.05.2012
comment
Нищо не се промени, все още не работи за 30 и 60 минути. Между другото, няма разлика в типовете стойности. - person Ogulcan Orhan; 15.05.2012