完全理解Android中的RemoteViews

本文详细介绍了Android中的RemoteViews,它属于SystemServer进程,通过Binder实现进程间通信。主要应用在通知栏和桌面小部件中。内容涵盖RemoteViews的创建、使用、变更原理,以及与PendingIntent的结合,展示了如何通过反射调用来更新通知栏布局。
摘要由CSDN通过智能技术生成

一、什么是RemoteViews

RemoteViews翻译过来就是远程视图.顾名思义,RemoteViews不是当前进程的View,是属于SystemServer进程.应用程序与RemoteViews之间依赖Binder实现了进程间通信.

二、RemoteViews的用法

RemoteViews使用最多的场合是通知栏和桌面小插件. 以通知栏为例,讲解下它的用法.

1、新建一个Notification

这里要注意是在android3.0之前都是使用如下的形式构建一个Notification

        // 1.新建一个Notification对象
        Notification mNotification = new Notification();
        // 2.添加属性,比如标题、内容、优先级、图片等
        mNotification.tickerText = "这是通知栏的标题";
        mNotification.icon = R.drawable.ic_launcher;
        mNotification.flags=Notification.FLAG_NO_CLEAR;
        mNotification.setLatestEventInfo(this, "这是内容", "这是标题", null);

在3.0之后官方推荐使用建造者模式创建Notification.

Notification mNotification = new Notification.Builder(this)
        .setContentTitle("这是标题 ")    
        .setContentText("这是内容")        
        .setSmallIcon(R.drawable.ic_launcher)                
        .build();

Notification有很多属性,这里列举一些

 - setContentTitle       设置标题
 - setContentText        设置内容
 - setLargeIcon          设置通知栏大图标
 - setSmallIcon          设置通知栏小图标
 - setContent            设置RemoteViews
 - setContentIntent      当通知条目被点击,就执行这个被设置的Intent.
 - setDeleteIntent       当用户点击"Clear All Notifications"按钮区删除所有的通知的时候,这个被设置的Intent被执行
 - setLights             设置闪光灯
 - setSound              设置声音
 - setPriority           设置优先级

2、设置Notification的RemoteViews

如果要给通知栏使用自定义布局就要使用RemoteViews了,传入包名和相应的布局.

RemoteViews mRemoteViews=new RemoteViews("com.example.remoteviewdemo", R.layout.remoteview_layout);

然后通过setContent()传入RemoteViews 对象即可.

这里顺便讲一下PendingIntent,PendingIntent是”延迟意图”的意思,就是当满足某一条件时出触发这个Intent.通过PendingIntent的getActivity、getBroadcast、getService等分别构建一个打开对应组件的延迟Intent.
传入四个参数,context、intent、requestCode(自定义)、flag.

Intent intent=new Intent(MainActivity.this,MainActivity.class);
PendingIntent mPendingIntent=PendingIntent.getActivity(MainActivity.thi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值