2010-08-07 3 views
0

Я пытаюсь создать намерения, которые будут установлены с помощью будильника. В настоящее время я могу сделать это с одним намерением, добавить к нему дополнительные данные (строки, но я отправляю их как одну строку с разделителем), и все работает нормально и уходит в правильное время. Однако, когда я пытаюсь отправить несколько намерений, подобных этому, они перезаписываются, и только один отключается в правильное время. Как я могу структурировать свои намерения, чтобы они отличались от будильника (я думаю, что они удаляются при запуске filterIntent()).android intents alarmmanager

длинный рассказ short-putExtra() делает все намерения одинаковыми ... как я могу заставить их выглядеть по-другому, поэтому они не будут удалены (и отслеживать их на случай, если я хочу удалить конкретный)

ответ

0

Вот как я планировал обновления для своих виджетов. Каждому из них разрешено быть уникальным, потому что у них есть уникальный номер идентификатора виджета.

Intent widgetUpdate = new Intent(); 
widgetUpdate.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 
widgetUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { appWidgetId }); 
widgetUpdate.putExtra(EXTRA_POSITION,0); 
widgetUpdate.putExtra(EXTRA_URL, URL); 
// make this pending intent unique by adding a scheme to it 
widgetUpdate.setData(Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"), String.valueOf(appWidgetId))); 
PendingIntent newPending = PendingIntent.getBroadcast(context, 0, widgetUpdate, PendingIntent.FLAG_UPDATE_CURRENT); 
// schedule the updating 
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending); 
+0

И как вы извлекаете данные? –

0

Согласно документации, AlarmManager проверяет два Intent s является эквивалентом использования filterEquals(). Ознакомьтесь с документами для filterEquals(), чтобы узнать, как он решает, являются ли два Intent s эквивалентными. Кроме того, решение chris324 является довольно хорошим.