2010-08-07 80 views
0

我想創建意圖,將使用alarmmanager設置。目前,我可以用一個意圖來做到這一點,爲它添加額外的數據(字符串,但我把它們作爲一個字符串與分隔符一起發送),並且一切正常,並在正確的時間熄滅。但是,當我嘗試發送多個這樣的意圖時,它們被覆蓋,並且只有一個在正確的時間點熄滅。我如何構建我的意圖,使它們看起來不同於警報管理器(我認爲它們在filterIntent()運行時被刪除)。android意圖alarmmanager

長故事short-putExtra()使所有的意圖看起來都一樣......我怎樣才能讓它們看起來不同,所以它們不會被刪除(並保持跟蹤它們以防我想刪除特定的一個)

回答

0

這就是我如何爲我的小部件預定更新。每個人都可以是唯一的,因爲他們有一個獨特的小工具ID號碼。

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

你如何檢索數據? – 2012-07-24 13:28:30

0

根據該文檔,使用filterEquals()如果AlarmManager檢查兩個Intent s爲等效。查看filterEquals()的文檔,瞭解它是如何決定兩個Intent是否相同。另外,chris324的解決方案是一個很好的解決方案。