笔记——RemoteViews远程View(十四)

2018-12-27 10:11:15 浏览数 (1)

1、定义:Remoteviews是一种远程View,和远程Service类似,Remoteviews表示的是一个View结构,它可以在其他进程中显示,Remoteviews提供了一组基础的操作用于跨进程更新它的界面。RemoteViews不是当前进程的View,是属于SystemServer进程。

特性: RemoteViews只是一个实现了Parcelable和Filter接口的类,而并非继承自View。 RemoteViews用来描述可运行在其他进程中的视图结构,但RemoteViews本身不是视图,只是一个描述类。 RemoteViews描述的远程视图需要通过layout资源文件定义。 RemoteViews类提供了一系列修改远程视图的方法。

应用:一般用于顶部通知栏和桌面小部件的开发。 1.通知栏主要是通过NotificationManager的notify方法来实现的,它除了默认效果外,还可以另外定义布局。 2.桌面小部件则是通过AppWidgetProvider来实现的,AppWidgetProvider本质上是一个广播。 3.通知栏和桌面小部件的开发过程中都会用到RemoteViews,它们在更新界面时无法像在Activity里面那样去直接更新View,这是因为二者的界面都运行在其他进程中,确切来说是系统的SystemServer进程。为了跨进程更新界面,RemoteViews提供了一系列set方法去实现基础操作(如设置内容text,背景图片,点击事件等),并且这些方法只是View全部方法的子集。 4.并非所有View都可以作为远程视图,只有声明了RemoteView注解(@RemoteView)的View才可以。例如系统提供的控件中EditText就不可以。

RemoteViews所支持的View类型如下,且它们的子类也是不支持的:详情请点击

LinearLayout、RelativeLayout、FrameLayout、GridLayout、AbsoluteLayout(已弃用) TextView、Button、ImageView、ImageButton、Chronometer、ProgressBar、ListView、GridView、StackView、ViewFlipper、AdapterViewFlipper、ViewStub、AnalogClock(已弃用)

0 人点赞