第5章 理解RemoteViews
2016-02-19 17:44
253 查看
用在通知栏和桌面小部件。跨进程显示界面。
RemoteViews中真正操作View的方法apply和reapply,前者会加载布局并更新界面,后者则只更新界面。
通知栏:
如果使用自定义Notification的话,需要用到RemoteViews来加载布局文件改变通知样式。
remoteView更新View的方式:
因为远程进程汇总显示无法直接findViewById,所以采用了一系列set方法来完成。
给里面的控件加单击事件,要使用PendingIntent并通过setOnClickPendingIntent方法来实现。
桌面小部件:
用于实现桌面小部件的类AppWidgetProvider,继承自BroadcastReceiver。
配置步骤:定义小部件的界面res/layout/widget.xml;
res/xml新建xml定义配置信息,initialLayout就是小工具使用的初始化布局;
定义小部件的实现类,需继承AppWidgetProvider,并复写重要方法;
在manifest.xml声明小部件,本质上是一个广播组件;
重要回调:onEnable,窗口第一次添加到桌面;
onUpdate,小部件被添加时或更新调用;
onDeleted,每删除一次部件调用;
onDisabled,最后一个该类型的桌面小部件删除时调用;
onReceive,根据不同的Action来调用上述方法;
PendingIntent:
PendingIntent是将来某个时刻要发生的Intent,Intent是立刻发生。
支持:启动Activity、Service、BroadcastReciver;
相当于startActivty,startService,sendBroadcast。
PendingIntent的匹配规则:内部Intent相同且requestCode相同;
Intent匹配规则:两个Intent的ComponentName和intent-filter相同;
Flag:
FLAG_NO_CREATE,基本不使用;
FLAG_ONE_SHOT,以第一个为准,后续的会全部和第一条保持一致,任意一条被触发,其他的都cancel;
FLAG_CANCEL_CURRENT,前面的相同的PendingIntent都会被cancel,只有最新的可用;
FLAG_UDPATE_CURRENT,前面的PendingIntent都会被更新(它们Intent中的extras都会被更新)
RemoteViews中真正操作View的方法apply和reapply,前者会加载布局并更新界面,后者则只更新界面。
通知栏:
如果使用自定义Notification的话,需要用到RemoteViews来加载布局文件改变通知样式。
remoteView更新View的方式:
因为远程进程汇总显示无法直接findViewById,所以采用了一系列set方法来完成。
remoteViews.setTextViewText(R.id.msg,"chapter_5");
给里面的控件加单击事件,要使用PendingIntent并通过setOnClickPendingIntent方法来实现。
桌面小部件:
用于实现桌面小部件的类AppWidgetProvider,继承自BroadcastReceiver。
配置步骤:定义小部件的界面res/layout/widget.xml;
res/xml新建xml定义配置信息,initialLayout就是小工具使用的初始化布局;
定义小部件的实现类,需继承AppWidgetProvider,并复写重要方法;
在manifest.xml声明小部件,本质上是一个广播组件;
重要回调:onEnable,窗口第一次添加到桌面;
onUpdate,小部件被添加时或更新调用;
onDeleted,每删除一次部件调用;
onDisabled,最后一个该类型的桌面小部件删除时调用;
onReceive,根据不同的Action来调用上述方法;
PendingIntent:
PendingIntent是将来某个时刻要发生的Intent,Intent是立刻发生。
支持:启动Activity、Service、BroadcastReciver;
getAvtivity(Context context,int requestCode,Intent intent,int flags); getService(Context context,int requestCode,Intent intent,int flags); getBroadcast(Context context,int requestCode,Intent intent,int flags);
相当于startActivty,startService,sendBroadcast。
PendingIntent的匹配规则:内部Intent相同且requestCode相同;
Intent匹配规则:两个Intent的ComponentName和intent-filter相同;
Flag:
FLAG_NO_CREATE,基本不使用;
FLAG_ONE_SHOT,以第一个为准,后续的会全部和第一条保持一致,任意一条被触发,其他的都cancel;
FLAG_CANCEL_CURRENT,前面的相同的PendingIntent都会被cancel,只有最新的可用;
FLAG_UDPATE_CURRENT,前面的PendingIntent都会被更新(它们Intent中的extras都会被更新)
相关文章推荐
- LeetCode - 29. Divide Two Integers
- ArrayList、LinkedList、 Vector、Map 用法比较
- 自动换行的标签。
- springmvc+quartz定时任务的实现
- Centos系统下Lamp环境的快速搭建
- Xcode菜单功能中文翻译
- 进程间通信方式
- lamp or lnmp or lnamp有什么区别?安装哪个好?
- Spring ContextLoaderListener And DispatcherServlet Concepts
- Linux设备驱动安装的基本过程
- golang走起(一)对象与指针
- 数据库代理
- Spring实现AOP的4种方式
- js获取设备信息
- Oralce创建用户
- MySQL 存储过程和函数
- iOS微信小视频优化心得
- AspectJ基础学习之三HelloWorld(转载)
- LeetCode - 28. Implement strStr()
- ios布局-与xib结合