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

做网站用什么ide做游戏网站的目地

做网站用什么ide,做游戏网站的目地,网站建设网站网站建设网站,站长查询工具1.LiveData是基于观察者模式,可以用于处理消息的订阅分发的组件。 LiveData组件有以下特性: 1) 可以感知Activity、Fragment生命周期变化,因为他把自己注册成LifecycleObserver。 2) LiveData可以注册多个观察者,只有数据…

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);MutableLiveData<Person> liveData = new MutableLiveData();liveData.observe(this, new Observer<Person>() {@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.yayakq.cn/news/962882/

相关文章:

  • 做网站首页看不到图片安徽建站
  • 如何做静态网站用py做网站
  • asp网站新闻置顶沈阳app制作
  • 安徽四建东方建设有限公司网站网站开发app小程序
  • 自己做网站需要哪些流程帝国cms手机网站教程
  • 湖北森泰建设集团有限公司网站重庆网站建设公司魁网
  • 北京品牌网站开发网站开发语言怎么样
  • 强的网站建设公司网络域名申请条件
  • 做商城型网站广告sem是什么意思
  • 做网站的图片用什么格式网站建设需要摊销几年
  • 企业网站备案案例用wordpress建站要不要用宝塔
  • 建设厅网站174号文汕头个人网站建设
  • 莞城做网站17一起做网站童装
  • 电销精准客户资源seo推广费用
  • 北京代建网站装修设计网站有哪些
  • 怎么把网站排名优化江苏建设人才考试网官方网站
  • 卖辅助网站怎么做岱山县网站建设
  • 企业网站酷站html网页框架
  • 提高网站浏览量在线制作图片海腾娱乐
  • 怎么建设网站多少钱做物流网站的公司
  • 网站服务器哪个好宁波正规网站建设使用方法
  • 什么插件可以做网站访问量统计中国建设网官方网站证书查询
  • 合肥高新城创建设投资有限公司网站智慧校园平台
  • 武义县网站建设网站设计中新闻版块怎么做
  • 酒泉手机网站建设广西建设网证件查询电子证打印
  • 技术支持 桂林网站建设自己做的网站出现左右滑动条
  • 网站(网店)建设方案范文套模板做网站教程
  • 可以申请微信号的网站陕西住房和城乡建设网站
  • 怎样登录韵网网站网站建设的软硬件环境
  • 上海建设公司网站wordpress 文字主题