【发布时间】:2014-08-10 19:14:30
【问题描述】:
我是 Android 开发的新手,我不得不使用 AlarmManager 重复警报。这是我第一次有机会使用 PendingIntent。然而,在阅读了文档 (http://developer.android.com/reference/android/app/PendingIntent.html) 之后,我真的很困惑 PendingIntent 到底是什么。
我的问题是:
第一季度。 PendingIntent 'pending' 以什么方式出现?很抱歉这个问题,但我想直观地了解PendingIntent 的含义。
第二季度。文档说:
PendingIntent 本身只是对系统维护的令牌的引用,该令牌描述了用于检索它的原始数据。这意味着,即使它拥有的应用程序的进程被杀死,PendingIntent 本身仍可用于其他已被赋予它的进程。如果创建应用程序稍后重新检索相同类型的 PendingIntent(相同的操作、相同的 Intent 操作、数据、类别和组件以及相同的标志),它将收到一个表示相同令牌的 PendingIntent,如果它仍然有效,并且可以因此调用 cancel() 将其删除。
怎么样,
对系统维护的描述原始数据的令牌的引用
与我的代码有关吗?
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0,photosIntent,0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime(),
10000, pendingIntent);
第三季度。我也不明白文档中的内容:
由于这种行为,重要的是要知道两个 Intent 何时被认为是相同的,以便检索 PendingIntent。人们犯的一个常见错误是创建多个 PendingIntent 对象,其 Intent 仅在其“额外”内容上有所不同,期望每次都获得不同的 PendingIntent。这不会发生。 Intent 中用于匹配的部分与 Intent.filterEquals 定义的部分相同。如果您使用两个根据 Intent.filterEquals 等效的 Intent 对象,那么您将获得相同的 PendingIntent。
extra contents 是什么?这是指getBroadcast(Context context, int requestCode, Intent intent, int flags)方法中的request code&flag参数吗?
对此的任何帮助将不胜感激。我的在线搜索没有给我想要的答案。另外,非常感谢您抽出宝贵的时间。
【问题讨论】:
标签: android android-pendingintent