RemoteViews

RemoteViews在实际开发中,主要用于在通知栏和桌面小部件的开发过程中。

通知栏主要是通过NotificationManager的notify方法来实现,它除了默认效果外,还可以另外定义布局。

桌面小部件则是通过AppWidgetProvider来实现的,AppWidgetProvider本质上是一个广播。

通知栏和桌面小部件的开发过程中都会用到RemoteViews,它们在更新界面时无法想在Activity里面那样去直接更新View,这是因为二者的界面都运行在其他进程中,确切来说是系统的SystemServer进程。

为了跨进程更新界面,RemoteViews提供了一系列set方法用来更新界面,并且这些set方法只是View全部方法的一部分(并不是支持所有的),而且RemoteViews中所支持的View类型也是有限的。

使用通知栏的话,定义Notification,会使用默认的布局,如果要使用自定的布局,需要给notification.contentView = remoteView指定remoteview,然后通过remoteView去更新界面。

使用桌面小部件的话,需要继承AppWidgetProvider类,并重写onUpdate方法。桌面小部件的更新也需要用到RemoteViews,更新方法主要是调用AppWidgetManager的updateAppWidget方法,传入appWidgetId跟RemoteViews。

AppWidgetProvider除了常用的onUpdate方法外,还有onEnabled,onDisabled,onDeleted以及onReceive。
其中比较重要的onReceive会自动根据广播的Action来调用其余的几个方法。(比如是更新,还是删除等等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值