本章主要讲解RemoteViews的应用,PendingIntent概述、RemoteViews的机制、RemoteVIews的意义
1.RemoteViews的应用
①通知栏Notification界面自定义用到RemoteViews
②桌面小部件中的view用到RemoteViews
2.PendingIntent:表示处于待定状态下的意图。
①.pendingIntent支持启动activity,启动service,发送广播。
②.pendingIntent标识符:
(1)FLAG_ONE_SHOT:所有消息栏都和第一条一致,只能打开任意一条
(2)FLAG_CANCEL_CURRENT:最新一条消息栏可以打开,其他的均不能打开
(3)FLAG_UPDATE_CURRENT:所有消息栏都和最新一条一致,均可以打开到最新一条消息的意图。
3.RemoteViews内部机制:首先RemoteViews会通过Binder传输到SystemServer进程,然后通过binder传入对view的action操作,然后达到更新view的效果。(详细如下)
首先RemoteViews会通过Binder传输到SystemServer进程,这是因为RemoteViews实现了Pacelable接口,因此他可以实现跨进程通讯,系统会根据RemoteViews中的包名等信息得到该应用的资源。然后会通过LayoutInflater去加载RemoteViews的布局文件。在SystemServer中就是一个普通的view,只不过相对我们的进程他是RemoteViews而已。接着系统会对view进行一些更新界面的任务,这些任务就是之前我们通过set方法提交的。通过binder传入对view的action操作,然后达到更新view的效果。
4.RemoteViews的意义:可以在同一个应用的不同进程中做界面的更新操作。