我刚开始学习Android开发,需要使用AlarmManager
来设置重复闹钟。这是我第一次使用PendingIntent
。但是在阅读文档(http://developer.android.com/reference/android/app/PendingIntent.html)后,我对PendingIntent
的真正含义感到困惑。
我的问题如下:
Q1. PendingIntent
为什么被称为“pending”?抱歉问这个问题,但我希望能直观地了解PendingIntent
的含义。
Q2. 文档中写道:
PendingIntent本身只是一个引用,它指向系统维护的一个标记,该标记描述了用于检索它的原始数据。这意味着,即使拥有它的应用程序进程被杀死,PendingIntent本身仍然可以从已经获得它的其他进程中使用。如果创建应用程序稍后重新检索相同类型的PendingIntent(相同的操作、相同的Intent动作、数据、类别和组件以及相同的标志),则如果该标记仍然有效,它将接收表示相同标记的PendingIntent,因此可以调用cancel()来删除它。
“系统维护的一个标记,该标记描述了用于检索它的原始数据”是如何与我的代码相关联的?
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0,photosIntent,0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime(),
10000, pendingIntent);
问题3. 我也不理解文档中接下来的内容:
由于这种行为,重要的是要知道在检索pendingIntent时,何时认为两个Intent是相同的。人们常犯的一个错误是创建多个PendingIntent对象,这些对象的Intent只有其“额外”内容不同,期望每次都会得到不同的PendingIntent。但实际上并不会发生这种情况。用于匹配的Intent部分是由Intent.filterEquals定义的部分。如果您使用的两个Intent对象根据Intent.filterEquals是相等的,则您将为它们获得相同的PendingIntent。
额外内容
指什么? 这是否指getBroadcast(Context context, int requestCode, Intent intent, int flags)
方法中的请求代码(request code)
和标志(flags)
参数?
希望能得到任何关于此的帮助。我在网上的搜索并没有给我想要的答案。同时感谢您花费时间。