RemoteViews的应用和原理

RemoveViews的应用和原理

《Android开发艺术探索读书笔记》

概念

RemoteView是一个可以在其他进程中显示的View结构。

RemoteViews提供了一组基础的操作用于跨进程更新它的界面。

应用场景

  1. 通知栏

  2. 桌面小部件

 

RemoteViews的应用

通知栏——NotificationManager使用RemoteViews实现自定义视图的效果

桌面小部件——AppWidgetProvider使用RemoteViews实现桌面小部件的视图

由于二者的View(通知栏的自定义视图和桌面小部件的视图)都运行在SystemServer进程中,因此无法直接在Activity(主进程)中更新View

RemoteViews提供了一系列set方法来控制跨进程更新界面,解决了二者更新View的困难。

 

RemoteViews在通知栏上的应用

创建RemoteViews来实现自定义布局,然后设置到notification中,随后就能通过RemoteViewsset方法来更新视图。

RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_notification);
remoteViews.setTextViewText(R.id.msg, "custom_notification");// 设置自定义视图的TextView的值
remoteViews.setImageViewResource(R.id.icon, R.drawable.icon);// 设置自定义视图的ImageView的值
PendingIntent j2Main = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnclickPendingIntent(R.id.button, j2Main);
​
Notification notification = new NotificationCompat.Builder(this, "custom_view")
    .setCustomContentView(remoteViews)//设置自定义视图
    ...
    .build();

 

RemoteViews在桌面小部件上的应用

AppWidgetProviderAndroid提供的用于实现桌面小部件的类,本质是一个广播,即BroadcastReceiver

桌面小部件的开发步骤

  1. 定义小部件界面R.layout.widget

  2. 定义小部件配置信息res/xml/appwidget_provider_info.xml,包括指定小部件使用的初始化布局,设定小部件的最小尺寸 和 小部件的自动更新周期(单位毫秒)。

  3. 定义小部件的实现类AppWidgetProvider

  4. AndroidManifest.xml中声明小部件(作为receiver)

小部件实现类常用的方法:

  1. onEnabled:当小部件第一次添加到桌面时被调用,可以添加多次,但只在第一次调用。

  2. onUpdate: 小部件被添加时 或 更新时 都会调用。

  3. onDeleted: 每删除一次小部件就调用一次。

  4. onDisabled: 当最后一个该类型的小部件被删除时调用。

  5. onReceive: 广播的内置方法,用于分发具体的事件给其他类。根据接收到的Intent

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值