首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RemoteViews的内部机制

RemoteViews的作用是在其他进程中显示并更新View的界面,主要用于通知栏和桌面小部件。...具体过程 首先RemoteViews会通过Binder传递到SystemServer进程,这是因为RemoteViews实现了Parcelable接口,因此它可以跨进程传输,系统会根据RemoteViews...然后会通过LayoutInflater加载RemoteViews中的布局文件,在SystemServer进程中加载后的布局文件是一个普通的View,只不过相对我们的进程它是一个RemoteViews而已...set方法对View所做的更新并不是立刻执行的,在RemoteViews内部会记录所有的更新操作,具体的执行操作要等到RemoteViews被加载以后才能执行,这样RemoteViews就可以在SystemServer...远程进程通过RemoteViews的apply方法进行View的更新操作,RemoteViews的apply方法内部则会去调用所有Action对象并调用它们的apply方法,具体的View更新操作游Action

52510
您找到你想要的搜索结果了吗?
是的
没有找到

RemoteView

2.RemoteViews的内部机制 进入源码 class RemoteViews implements Parcelable, Filter 它实现了Parcelable接口,显然和跨进程通信有关...然后看一下最常用的构造方法 public RemoteViews(String packageName, int layoutId) packageName表示当前应用的包名 layoutId对应的布局文件...RemoteViews只支持如下类型 Layout: FrameLayout,LinearLayout,RelativeLayout,GridLayout View: AnalogClock,Button...由此可见通知栏和桌面小部件是在NotificationManagerService和AppWidgetService被加载,然后运行在SystemServer中 首先RemoteViews通过Binder...(在SystemServer算一个普通的view,而在我们的进程中算RemoteViews)然后会有一系列set方法更新view,但不会立即执行,而是会保存下来,直到RemoteViews被加载以后再执行

1.1K40

Android开发笔记(五十二)通知推送Notification

RemoteViews 远程视图RemoteViews与页面视图一样也是从layout下的布局文件中得到,二者之间的区别主要有: 1、远程视图主要用于桌面部件与通知栏部件,而页面视图用于APP页面...对象的set方法来设置; 下面是RemoteViews的常用方法: RemoteViews : 构造函数。...方式推送通知,并可根据部件上的点击事件改变通知内容; 3、采用RemoteViews方式让后台服务保持在前台运行,并可由后台服务的运行进度来实时更新通知内容; 下面是采用RemoteViews方式的通知推送效果图...widget_notify = new RemoteViews(getPackageName(), R.layout.widget_notify); if (is_play == true) {...widget_notify = new RemoteViews(getPackageName(), R.layout.widget_notify); if (bPlay == true) {

2.2K20

Android中的通知和自定义通知布局

类来实现, * 其实无论是使用系统提供的布局还是自定义布局,都是通过RemoteViews类实现,如果使用系统提供的布局, * 系统会默认提供一个RemoteViews...如果使用自定义布局的话这个RemoteViews对象需要我们自己创建, * 并且加入我们需要的对应的控件事件处理,然后通过setContent(RemoteViews remoteViews...)方法传参实现 */ RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notification...); /* * 对于自定义布局文件中的控件通过RemoteViews类的对象进行事件处理 */ remoteViews.setOnClickPendingIntent...的对象来对布局文件中的两个按钮进行事件处理,而 RemoteViews的两个处理单击事件的方法都必须要传入PendingIntent 对象,PendingIntent对象必须通过Intent对象来构造(

3.3K20

Android编程实现通知栏进度条效果的方法示例

= PendingIntent.getActivity(mContext, 0, in, 0); notification.contentIntent = pIntent; // 设置通知的显示视图 RemoteViews...remoteViews = new RemoteViews( mContext.getPackageName(), R.layout.notification_contentview); // 设置暂停按钮的点击事件...设置跳转到对应界面 PendingIntent pauseIn = PendingIntent.getActivity(mContext, 0, in, 0); // 这里可以通过Bundle等传递参数 remoteViews.setOnClickPendingIntent...设置跳转到对应界面 PendingIntent stopIn = PendingIntent .getActivity(mContext, 0, in, 0); // 这里可以通过Bundle等传递参数 remoteViews.setOnClickPendingIntent...(R.id.cancel, stopIn); // 设置通知的显示视图 notification.contentView = remoteViews; // 发出通知 manager.notify(notificationId

1.6K10

全面解析Notification

自定义通知需要做如下操作:1、创建自定义通知布局2、使用RemoteViews定义通知组件,如图标、文字等3、调用setContent()将RemoteViews对象绑定到NotificationCompat.Builder4...关于自定义Notification兼容问题,请阅读我的另一篇博客 Android通知栏版本兼容解决方案 例子: RemoteViews notifactionView = new RemoteViews...和普通Notification不同的是,我们需要自定义的视图,而这个视图显示的进程和我们创建视图的进程不再一个进程,所以我们需要使用RemoteViews,首先要使用RemoteViews来创建我们的自定义视图...: //用RemoteViews来创建自定义Notification视图 RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.view...来创建自定义Notification视图 RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.view_fold

2.6K30

Android应用界面开发——Widget(实现液晶时钟)

一般,开发桌面控件只需定义一个APPWidgetProvider的子类,并重写它的onUpdate()方法即可,重写该方法的步骤: 创建一个RemoteViews对象,创建该对象时可以指定加载指定的界面布局文件...如果需要改变上一步所加载的界面布局文件的内容,则可通过RemoteViews对象进行修改。 创建一个ComponentName对象。 调用APPWidgetManager更新桌面控件。...归纳起来,其核心代码就是使用APPWidgetManager通过RemoteViews来更新APPWidgetProvider的子类实例(需要将它包装成ComponentName对象)。...public void handleMessage(Message msg) { if (msg.what == 0x123){ RemoteViews...views = new RemoteViews(mContext.getPackageName(), R.layout.main); //定义SimpleDateFormat

2.3K60

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券