当前位置: 首页 > news >正文

前端面试题天津网站优化指导

前端面试题,天津网站优化指导,网站空间需要备案吗,临海手机网站1.LiveData是基于观察者模式#xff0c;可以用于处理消息的订阅分发的组件。 LiveData组件有以下特性#xff1a; 1) 可以感知Activity、Fragment生命周期变化#xff0c;因为他把自己注册成LifecycleObserver。 2) LiveData可以注册多个观察者#xff0c;只有数据…1.LiveData是基于观察者模式可以用于处理消息的订阅分发的组件。 LiveData组件有以下特性     1) 可以感知Activity、Fragment生命周期变化因为他把自己注册成LifecycleObserver。     2) LiveData可以注册多个观察者只有数据有变化观察者就可以收到更新的数据          但仅限于处于活跃状态active的观察者。     3) 在onDestroy时LiveData会自动回收注册的观察者不会导致Activity内存泄漏。 2.简单使用介绍 1创建LiveData对象并注册观察者。 TextView ageTv findViewById(R.id.age);TextView nameTv findViewById(R.id.name);MutableLiveDataPerson liveData new MutableLiveData();liveData.observe(this, new ObserverPerson() {Overridepublic void onChanged(Person person) {ageTv.setText(String.valueOf(person.age));nameTv.setText(person.name);}}); 2通过setValue改变数据这时会调用上面的onChanged()方法从而实现了数据驱动UI。后面会进行源码分析他的实现逻辑。 findViewById(R.id.set_value).setOnClickListener(v - {Person person new Person();person.age this.age;person.name xiaohua;liveData.setValue(person);}); 3子线程中数据变化得需要调用postValue发送到主线程执行因为在子线程是无法更新UI的。 findViewById(R.id.post_value).setOnClickListener(v - {new Thread(){Overridepublic void run() {super.run();Person person new Person();person.age MainActivity.this.age;person.name xiaohua;liveData.postValue(person);}}.start();}); protected void postValue(T value) {boolean postTask;synchronized (mDataLock) {postTask mPendingData NOT_SET;mPendingData value;}if (!postTask) {return;}ArchTaskExecutor.getInstance().postToMainThread(mPostValueRunnable);} private final Runnable mPostValueRunnable new Runnable() {SuppressWarnings(unchecked)Overridepublic void run() {Object newValue;synchronized (mDataLock) {newValue mPendingData;mPendingData NOT_SET;}setValue((T) newValue);}}; 如果在子线程冲调用setValue会抛出下面的异常 java.lang.IllegalStateException: Cannot invoke setValue on a background threadat androidx.lifecycle.LiveData.assertMainThread(LiveData.java:487)at androidx.lifecycle.LiveData.setValue(LiveData.java:306)at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)at com.example.jetpack.MainActivity$2.run(MainActivity.java:52) 4只要数据源发生了变化调用setValue或postValue在LiveData注册的观察者       就会回调onChanged方法在这个方法中可以接收到数据的更新。
http://www.laogonggong.com/news/104153.html

相关文章:

  • 如何把优酷视频放到网站上自家宽带怎么建设网站
  • 如皋网站建设辽宁建设官方网站
  • 石家庄企业建站系统wordpress+自定义主页
  • 怎么维护好网站医院咨询
  • 河南省建设监理协会官网网站关键词推广优化
  • 适合seo的网站合肥网站优化推广方案
  • 网站设计团队发展软文推广什么意思
  • 长汀网站建设wordpress layui
  • 如何做网站地图txt学seo推广
  • 中国建设银行江西分行网站首页wordpress 二次开发教程
  • 建设文化网站好处建立网站流程图
  • 课程培训网站建设自己做广告用什么软件
  • 做网站用小型机或服务器网站建设推进会
  • 制作网站的策划方案小米路由器wordpress
  • 知名网站制作深圳龙华建设公司
  • h5网站不利于优化吗wordpress theid
  • 网站收录图片怎样做网站性能优化
  • 深圳网站建设yihe kj学校网站如何做
  • 滴道网站建设珠海网站开发公司
  • 域名 网站卖域名的网站
  • 手机怎么建设视频网站佛山市公司网站制作
  • 政务网站建设工作计划结尾网站建设开发免费咨询
  • 百度快照网站怎么做短视频平台的运营策略有哪些
  • 网站上的html内容怎么修改成都做网站的
  • 怎么查找网站后台福州哪里会网站制作的
  • 做网站送推广如何用ps做网站首页图片
  • 企业网站平台建设咨询合同做网站常用的技术有哪些
  • 全网网站推广杭州网站设计公司
  • 专做老酒的网站wordpress foter
  • html5 网站搭建网站后台字体安装