PendingIntent   由进程(简单理解为一个应用本体)A创建并编辑内部所含有的Intent (将Intent打包)  之后将PendingIntent交给进程(理解为桌面控件appwidget所在进程)B

当用户对桌面控件进行不同操作时触发不同的事件,从而调用对应的PendingIntent,PendingIntent再调用它所包装的Intenet 达到不同进程间的事件回调的效果。

该类所含静态方法以创建相应的Intent:

getActivity 得到的Intent对象功能为启动一个Activity。

跳转至进程A(应用本体)的某个特定界面

getBroadcast ……启动一个广播。

通知进程A(应用本体)做出相应反应。(比如歌曲播放的下一首……)

getService ……启动一个服务。

启动服务做出相应操作(下载……)

 

RemoteViews  字面理解为远程视图集合   也就是远程控件集合   个人理解为不在同一进程中的控件就是RemoteViews

要实现对appWidget中控件的监听方法:

AppWidget相对于应用本体是在另一个进程中运行的,所以其中的控件就是RemoteViews

而实际代码只能在应用本体中写出,所以具体实现对AppWidget中事件进行监听要通过在应用本体代码中得到AppWidget中的RemoteViews,对RemoteViews添加对应的监听(比如onClickPendingIntent)其中该点击监听中两个参数为:所点击的视图id、点击时触发的PendingIntent。

在监听添加后不要忘记更新对应的AppWidget。其中两个参数分别为更新的Appwidget的Id

和他所对应的RemoteViews。

监听的添加一般是在AppWidget创建时添加,所以该段代码写在onUpdate方法中。而且亚注意的是,当你创建多个AppWidget时,系统会自动为其分配相应的id,而添加监听是一般也是根据id遍历所有对象,并添加监听。(个人认为这个位置可以优化,不然每次创建新对象时都会在此遍历并添加监听,影响速度)