首页
学习
活动
专区
工具
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

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

    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.4K20

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

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

    3.5K20

    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.7K10

    全面解析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.8K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券