我是Android开发的新手,我不得不使用AlarmManager
使用重复闹钟。这是我第一次有机会使用PendingIntent的地方。但是在阅读完文档(http://developer.android.com/reference/android/app/PendingIntent.html)后,我真的很困惑PendingIntent究竟是什么。
我的问题是:
Q1。以PendingIntent
'待定' ?对此问题表示歉意,但我希望能够直观地了解PendingIntent
的含义。
Q2。文档说:
PendingIntent本身只是对系统维护的令牌的引用,该令牌描述了用于检索它的原始数据。这意味着,即使其拥有的应用程序的进程被终止,PendingIntent本身也将保持可用于已经给出它的其他进程。如果创建应用程序稍后重新检索相同类型的PendingIntent(相同的操作,相同的Intent操作,数据,类别和组件以及相同的标志),它将接收表示同一令牌的PendingIntent,如果它仍然有效,并且可以因此调用cancel()将其删除。
怎么做,
引用由系统维护的描述原始数据的令牌
与我的代码相关吗?
pendingIntent = PendingIntent.getBroadcast(getApplicationContext(),0,photosIntent,0);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,SystemClock.elapsedRealtime(),
10000, pendingIntent);
Q3。我也不明白文档中的内容:
由于这种行为,为了检索PendingIntent,重要的是要知道两个Intent何时被认为是相同的。人们常犯的一个错误就是使用Intent创建多个PendingIntent对象,这些Intent只在其" extra"内容,期望每次获得不同的PendingIntent。这不会发生。用于匹配的Intent部分与Intent.filterEquals定义的部分相同。如果你使用两个与Intent.filterEquals相同的Intent对象,那么你将获得两个相同的PendingIntent。
extra contents
是什么?这是指request code
& flag
方法中的getBroadcast(Context context, int requestCode, Intent intent, int flags)
参数?
对此的任何帮助都将非常感激。我的在线搜索没有给我我想要的答案。另外,非常感谢你的时间。
答案 0 :(得分:2)
Q1 - 以什么方式“等待”?
系统存储您存储在PendingIntent
中的值,并允许您(或框架的其他部分)稍后查找它们,就好像查找它们的组件使用该信息自发地创建了一个新的Intent
Q2 - “引用令牌”如何与我的代码相关?
Android Framework实际上并不存储您创建的PendingIntent对象;它为意图(在这种情况下,动作,数据,类型,类和类别)散列“识别信息”,并使用它来查找其余信息。您创建的文字PendingIntent
对象不会被保存,它所代表的信息也会保存。
问题3 - “额外内容”是什么?
此处引用的“额外内容”是您通过putExtra()
存储的可分配项目。 requestCode和flags值也被保存和检索,但是当文档引用“extras”时,它意味着Intents可用于携带附加信息的文字getExtras()
Bundle。