RemoteViews的原理

  • 时间:
  • 浏览:1

RemoteViews.apply

2、获取Inflater布局加载服务

应用程序的通信一般基于Binder机制,在使用RemoteViews的以前将RemoteViews传给远程应用程序,要是RemoteViews是都能够序列化的,系统会根据RemoteViews的包名,去创建Inflater类,并根据layoutId创建出view,时候 应用apply最好的办法 来更新布局的内容。理论上Binder都能够支持View的所有操作,时候 太麻烦,前要提供更多的IPC操作,降低IPC的速率。要是Android系统在实现界面更新的以前这样 每调用一次set操作就进行一次IPC操作,要是在调用诸如NotificationManager的notify的以前,进行批量更新。类似,如下代码创建有有另一个多RemoteViews并设置TextView。

setTextViewText

performApply

RemoteViews的apply和reapply的区别,apply多了有有另一个多创建布局的步骤,即创建Inflater后再inflate布局,以前再加载内容;而replay只会更新布局,不必创建新的布局。

RemoteViews用法

底下代码将setTextViewText转再加有有另一个多ReflectionAction,蕴含了textview_id、setText最好的办法 、value值。当调用appWidgetManager.updateAppWidget的以前就将remoteViews提交给远程应用程序,以前远程应用程序会执行RemoteViews的apply最好的办法 ,如下所示:

3、根据RemoteViews中的layoutId,加载布局

执行RemoteViews的performApply,执行Action列表的所有apply操作,进行View更新

参数root也要是RemoteViews的layoutId对应的父view,viewId也要是要查找的子view,这里要是id为text_1的TextView,Action的apply最好的办法 首先find出TextView,时候 反射调用他的setText最好的办法 ,进行value设置。

RemoteViews每调用用有有另一个多set最好的办法 都会再加有有另一个多Action到Action列表中,Action也是序列化的,也都能够通过Binder传到远程。当执行Notification的notify最好的办法 后,就会调用RemoteView的apply最好的办法 ,该最好的办法 会遍历每个Action,执行Action的 apply函数,apply函数会通过反射的最好的办法 调用RemoteViews的子子view的method,并进行设置,从而完成布局更新。

1、获取RemoteViews对象

RemoteViews的apply最好的办法 分为以下几步:

RemoteViews最好的办法

在调用setTextViewText的以前,RemoteViews的最好的办法 如下:

RemoteViews支持在时候 应用程序显示和更新View,可能RemoteViews这样 findViewById的最好的办法 ,可能它是远程的View,即使有findViewById亲戚亲戚朋友也他不知道远程app的资源文件id  要是可能时候 更新View的内容 就要使用RemoteViews提供的一系列set最好的办法 :