Android Cookie

Android 安卓是最开放的手机操作系统,谷歌安卓APP开发和安卓市场的相关话题

如何创建不同的pendingintent使filterEquals()返回false?

我正在使用AlarmManager设置重复意图,但它已经引起了一些小麻烦,所以希望任何人都可以提供帮助。 概要 有2个未决意图。 一个运行在1000,另一个运行在每天2000。 每个包含来自数据库的行id以用于识别目的。 代码看起来像这样: Intent i = new Intent(mContext, ScheduleReceiver.class); i.putExtra(RuleDBAdapter.KEY_ROWID, (int)taskId); PendingIntent pi =PendingIntent.getBroadcast(…); mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi); 删除: 问题是我们需要删除其中一个。 删除待处理意图的正确方法是设置相同的意图,然后从AlarmManager调用cancel。 Android文档: public void cancel(PendingIntent操作) 删除具有匹配Intent的所有警报。 任何types的警报,其Intent与此匹配的警报(由filterEquals(Intent)定义)将被取消。 public boolean filterEquals(Intent other) 为了意图解析(过滤)的目的,确定两个意图是否相同。 也就是说,如果他们的行为,数据,types,类别和类别是相同的。 这不会比较意图中包含的任何额外数据 。 所以在上面的例子中,如果我做出相同的意图然后取消, 上述两个意图将被取消,因为它们来自同一个类/相同的动作等(除了“额外”数据是rowId但filterEquals不在乎关于额外的数据)。 这有什么解决方法吗?