Android开发艺术探索读书笔记(第5章 RemoteView)
来源:互联网 发布:ios 耗电量优化 编辑:程序博客网 时间:2024/06/05 10:31
原理
RemoteView的作用是在其他进程中显示并更新view界面。
大量的IPC操作会影响效率,为了解决这个问题,系统并没有通过Binder去直接支持View的跨进程访问,而是提供了一个Action的概念,Action代表一个view的操作。系统首先将view操作封装成Action对象并将这些对象跨进成传输到远程进程。接着在远程进程执行Action的具体操作。在我们的应用中每调用一次set方法,RemoteView中就会添加对应的Action对象,当我们通过NotificationManager和AppWidgetManager提交我们的更新时,这些Action对象就会传输到远程进程并在远程进程执行。
远程进程通过RemoteView的apply方法来进行view的更新操作。RemoteView的apply方法内部则会去遍历所有的Action对象并调用它们的apply方法,具体的View更新操作是由Action对象的apply方法来完成的。这样的好处是不用定义大量的Binder接口,其次通过在远程进程中批量执行RemoteView的修改操作从而避免了大量的IPC操作,这样就提高了程序的性能。
实际应用
两个应用,一个需要更新另外一个的界面,这时候可以使用AIDL,但是如果对界面的更新比较频繁,这时候会有效率问题,同时AIDL接口可能变得比较复杂,这时候采用RemoteView就没有这个问题了。但是RemoteView的缺点是仅支持一些常见的View。不支持自定义View.
RemoteView有两个方法,apply和reapply,两个方法的区别在于apply会加载布局并更新界面,而reapply置灰更新界面。
如果打算用RemoteView来实现两个应用之间的界面更新,那么还有一个问题,就是布局文件的加载问题。一个应用的资源id传递到另一个应用中很可能是无效的,因为两个应用中布局文件的资源id可能不完全一样,解决办法如下:
既然资源id不一样,我们就通过布局文件名称来加载布局文件,首先两个应用要提前约定好RemoteView中资源文件名称,然后在A中根据名称查找对应的布局文件并加载,接着再调用RemoteView的reapply方法即可将B中对View所做的一系列更新操作全部作用于A中加载的View上面。
- Android开发艺术探索读书笔记(第5章 RemoteView)
- Android开发艺术探索 第5章 理解RemoteViews 读书笔记
- 【读书笔记】【Android 开发艺术探索】第 2 章 IPC 机制
- Android开发艺术探索读书笔记(第2章 IPC机制)
- Android开发艺术探索读书笔记(第7章 动画)
- Android开发艺术探索读书笔记(第10章 消息机制)
- 《Android开发艺术探索》第1章读书笔记
- Android开发艺术探索 第2章 IPC机制 读书笔记
- 《Andoird开发艺术探索第五章笔记》-理解RemoteView
- 《Android开发艺术探索》读书笔记 (5) 第5章 理解RemoteViews
- Android 开发艺术探索 读书笔记5
- Android 开发艺术探索读书笔记
- 《Android开发艺术探索》读书笔记
- 【读书笔记】Android开发艺术探索
- 《Android开发艺术探索》读书笔记
- 《Android 开发艺术探索》读书笔记
- Android 开发艺术探索 读书笔记
- Android开发艺术探索 第4章
- Activiti工作流进阶(十二)————工作流提供的用户角色
- 单片机硬件中断如何触发
- Unicode字符串解码
- Java网络编程socket
- Objective-C基础之数组
- Android开发艺术探索读书笔记(第5章 RemoteView)
- 从零开始服务器配置java web项目
- Python正则表达式指南
- 能忍人所不能忍,方可有为
- C# 递归 删除指定目录下的空文件
- 关于二维码的使用
- jquery获得select option的值 和对select option的操作
- Zend Studio使用教程:序列号注册
- android图片重绘添加简单水印(日期等)