1.RemoteViews的构造方法public RemoteViews(String packageName,int layoutId)

第一个表示当前应用的包名(反射机制需要),第二个表示加载的布局文件。

注:RemoteViews不能支持所有View类型。就像下表没有EditTextView,如果在布局文件中则会报错

所支持类型如下:

并提供相应的方法:

二、运作流程

①、RemoteViews通过Binder传送到SystemServer ②、系统根据RemoteViews的包名等信息去得到该应用的资源,之后通过LayoutParams去加载RemoteViews的layout文件  ③、系统会对View执行一系列界面更新任务(任务是由set方法提交的)。注:View所做的更新不是立即执行的,必须等到RemoteViews被加载完成后,才会执行,因为是异步。

扩展:关于③中set传递的任务。当应用每一次调用set方法,就会将一个Action对象添加到RemoteViews中。(Action对象:代表一个View操作,实现了Parcelable方法,系统首先将View操作封装到该对象中,然后通过远程传输到远程进程,远程进程执行Action对象中的方法)。之后通过NotificationManger和AppWidgetManager提交(就是将Action远程传输到远程进程中)

④、远程进程会调用RemoteViews的apply方法对所有action对象进行遍历,调用View的apply()方法。

运行图

三、对其中一个方法的分析

详见P233页,将方法,封装到action中。将action对象封保存在ArrayList中。

P234也,RemoteViews的apply方法:加载RemoteViews中的布局文件,之后通过performApply遍历action对象,并调用其apply方法。

注:通知栏和桌面小插件在初始化界面时候会用apply方法(加载布局并更新界面),reApply(只会更新界面).P236 对方法的应用

P237 ReflectionAction源码:通过反射调用View的方法。

四、RemoteViews的意义(用BroadcastRecevier模拟)

步骤:①、创建两个Activity ②、在第二个Activity中注册BroadcastRecevier ③、第一个Activity将RemoteViews传递给Broadcast,然后Broadcast调用第二个Activity的遍历方法。

P241页的解析(未完成)

RemoteViews的内部机制的更多相关文章

  1. ThreadLocal内部机制及使用方法

    一.介绍ThreadLocal内部机制之前,先简单说明一下其特点及用途: 1.ThreadLocal是单线程内共享资源,多线程间无法共享(即线程A访问不了线程B中ThreadLocal存放的值): 2 ...

  2. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  3. SQL Server 内存中OLTP内部机制概述(四)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  4. SQL Server 内存中OLTP内部机制概述(三)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  5. SQL Server 内存中OLTP内部机制概述(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  6. SQL Server 内存中OLTP内部机制概述(一)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  7. LocalActivityManager的内部机制

    LocalActivityManager内部机制的核心在于,它使用了主线程对象mActivityThread来装载指定的Activity.注意,这里是装载,而不是启动,这点很重要. 所谓的启动,一般是 ...

  8. new和instanceof的内部机制

    new和instanceof的内部机制 首先我们来看看obj = new o()这条语句发生了什么: var obj = (function(){ var obj = {}; obj.__proto_ ...

  9. zookeeper 内部机制学习

    zookeeper 内部机制学习 1. zk的设计目标 最终一致性:client不论连接到那个Server,展示给它的都是同一个视图. 可靠性:具有简单.健壮.良好的性能.如果消息m被到一台服务器接收 ...

随机推荐

  1. 当nginx 500 伪静态错误时,记录解决方法rewrite or internal redirection cycle while processing

    错误日志::rewrite or internal redirection cycle while processing "/index.php/index.php/index.php/in ...

  2. slave延迟原因及优化方法

    转载叶总:http://imysql.com/2015/04/12/mysql-optimization-case-howto-resolve-slave-delay.shtml 一般而言,slave ...

  3. Oracle创建主键自增表

    Oracle创建主键自增表   1.创建表    create table Test_Increase(            userid number(10) NOT NULL primary k ...

  4. zend framework 初识

    1. 请求顺序 : index.php --> Bootstrap.php --> IndexController.php 2. 验证顺序 : Bootstrap.php function ...

  5. C# Directory类

    Directory类 是一个静态类,常用的地方为创建目录和目录管理. 一下来看看它提供的操作. 1.CreateDirectory 根据指定路径创建目录.有重载,允许一次过创建多个目录. 2.Dele ...

  6. Eclipse IDE for Java EE Developers使用和新建工程helloworld

    开发j2ee还是用专门的java ee eclipse,自带了许多开发j2ee的插件,包括: This package includes: Data Tools Platform Eclipse Gi ...

  7. 开源欣赏wordpress之post.php

    switch($action) { case 'postajaxpost': case 'post': case 'post-quickpress-publish': case 'post-quick ...

  8. 八款强大的jQuery图片滑块动画插件

    jQuery是一款相当轻巧的JavaScript框架,目前几乎每一个WEB项目都在使用jQuery,因为jQuery插件实在太丰富,尤其是 一些图片滑块插件和jQuery焦点图插件,更是多如牛毛,很多 ...

  9. windows多线程没那么难

    windows多线程没那么难 作者:vpoet mail:vpoet_sir@163.com 上一博文中我们引入了CreateThread()多线程编程一个简单的例子,事实上我说windows 多线程 ...

  10. 用B-树实现虚拟图书管理系统

    学校数据结构的课程实验之一. 用到的数据结构:B-树 基本功能:对虚拟书库的图书进行查看.增加.删除.修改. 主函数: #include <iostream> #include " ...