Android 安卓警报管理器
我正在尝试创建将使用alarmmanager设置的意图。目前,我只需要一个目的就可以做到这一点,向其中添加额外的数据(字符串,但我使用分隔符将它们作为一个字符串发送),然后一切正常,并在正确的时间运行。但是,当我尝试发送多个这样的意图时,它们会被覆盖,并且只有一个在正确的时间发出。我如何组织我的意图,使它们在alarmmanager中看起来不同(我认为它们在运行filterIntent()时被删除)Android 安卓警报管理器,android,android-intent,alarmmanager,Android,Android Intent,Alarmmanager,我正在尝试创建将使用alarmmanager设置的意图。目前,我只需要一个目的就可以做到这一点,向其中添加额外的数据(字符串,但我使用分隔符将它们作为一个字符串发送),然后一切正常,并在正确的时间运行。但是,当我尝试发送多个这样的意图时,它们会被覆盖,并且只有一个在正确的时间发出。我如何组织我的意图,使它们在alarmmanager中看起来不同(我认为它们在运行filterIntent()时被删除) 长话短说-putExtra()使所有的意图看起来仍然一样。。。如何使它们看起来不一样,从而不会被
长话短说-putExtra()使所有的意图看起来仍然一样。。。如何使它们看起来不一样,从而不会被删除(并跟踪它们,以防我要删除特定的小部件)这就是我为我的小部件安排更新的方式。每个小部件都允许是唯一的,因为它们有一个唯一的小部件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);
根据文档,
AlarmManager
检查两个意图是否等效。查看filterEquals()
的文档,了解它如何决定两个Intent
s是否相等。而且,chris324的解决方案是一个非常好的解决方案。那么如何检索数据呢?