PendingIntent原理
来源:互联网 发布:排队叫号app源码 编辑:程序博客网 时间:2024/06/05 09:59
在Android开发中,很多地方都要用到PendingIntent,比如Alarm。顾名思义,PendingInten并不是Intent,而是对Intent包装,然后在后续某个时间执行intent。
PendingIntent用于描述Intent及其最终的行为.
你可以通过getActivity(Context context, int requestCode, Intent intent, int flags)系列方法从系统取得一个用于启动一个Activity的PendingIntent对象,
可以通过getService(Context context, int requestCode, Intent intent, int flags)方法从系统取得一个用于启动一个Service的PendingIntent对象
可以通过getBroadcast(Context context, int requestCode, Intent intent, int flags)方法从系统取得一个用于向BroadcastReceiver的Intent广播的PendingIntent对象
返回的PendingIntent可以递交给别的应用程序,然后继续处理。这里的话你可以稍后才处理PendingIntent中描述的Intent及其最终行为。
当你把PendingIntent递交给别的程序进行处理时,PendingIntent仍然拥有PendingIntent原程序所拥有的权限(with the same permissions and identity).当你从系统取得一个PendingIntent时,一定要非常小心才行。比如,通常,如果Intent目的地是你自己的component(Activity/Service/BroadcastReceiver)的话,你最好采用在Intent中显示指定目的component名字的方式,以确保Intent最终能发到目的,否则Intent最后可能不知道发到哪里了。一个PendingIntent就是Android系统中的一个token(节点,这个应该是Linux或C\C++用语)的一个对象引用,它描述了一些将用于retrieve的数据(这里,这些数据描述了Intent及其最终的行为)。
这就意味着即使PendingIntent原进程结束了的话, PendingIntent本身仍然还存在,可在其他进程(PendingIntent被递交到的其他程序)中继续使用.如果我在从系统中提取一个PendingIntent的,而系统中有一个和你描述的PendingIntent对等的PendingInent, 那么系统会直接返回和该PendingIntent其实是同一token的PendingIntent,而不是一个新的token和PendingIntent。然而你在从提取PendingIntent时,通过FLAG_CANCEL_CURRENT参数,让这个老PendingIntent的先cancel()掉,这样得到的pendingInten和其token的就是新的了。
通过FLAG_UPDATE_CURRENT参数的话,可以让新的Intent会更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。另外,我们也可以在PendingIntent的原进程中调用PendingIntent的cancel ()把其从系统中移除掉。
- PendingIntent原理
- Android中的PendingIntent 原理
- PendingIntent实现原理和代码
- PendingIntent实现原理和代码
- PendingIntent实现原理和代码
- PendingIntent
- PendingIntent
- PendingIntent
- PendingIntent
- PendingIntent
- PendingIntent
- PendingIntent
- PendingIntent
- pendingIntent
- PendingIntent
- PendingIntent
- pendingIntent
- pendingIntent
- Android 控制台异常:ScrollView can host only one direct child .
- Eclipse快捷键 10个最有用的快捷键
- Git使用基础篇
- 07-Scrum过程-迭代计划会(Scrum Planning Meeting)
- Eclipse.ini的相关说明
- PendingIntent原理
- linux 命令大全
- UITextField和UITextView iOS中的输入框
- inline内联函数
- Hadoop中一个distcp
- linux shell命令汇总和备忘
- cvCreateFileCapture返回空的问题
- Oracle DB 管理数据库存储结构
- Linux动态和静态修改ip(转)