当前位置: 首页 > 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.w-s-a.com/news/33041/

相关文章:

  • 网站代理访问是什么意思外国优秀设计网站
  • 合肥个人建站模板网络技术服务有限公司
  • 做网站什么公司好dw企业网站开发教程
  • 怎么做自己的个人网站宝安网站设计哪家最好
  • 浩博建设集团网站站长网站统计
  • 电商网站开发视频seo排名优化方式方法
  • 宿迁市住房城乡建设局网站wordpress纯图片主题
  • 广州建设网站 公司湖北省建设信息网官网
  • 网站建立时间查询做百度移动网站优化排
  • 网站建设和运行费用qq恢复官方网站
  • 可以免费建立网站吗免费的网络营销方式
  • 天津企业设计网站建设wordpress标题字体大小
  • 上高县城乡规划建设局网站创业项目
  • 钓鱼网站在线下载广州网站设计哪里好
  • 做阿里国际网站会有成效吗wordpress微博同步
  • 西安网站建设云速网络网站运营情况怎么写
  • 免费建网站的网站微信商城分销系统方案
  • 烟台网站seo服务友情链接有哪些展现形式
  • 什么是移动网站开发免费网站开发框架
  • 做网站 创业wordpress子菜单
  • 门户网站类型有哪些权重7以上的网站
  • 政务网站建设论文android app开发教程
  • 网站开发实训h5总结个人网站注册平台要多少钱
  • 空白网站建设wordpress高亮代码过长
  • 盐城 网站开发什么叫做门户网站
  • 广东快速做网站公司哪家好本地建wordpress
  • dedecms如何做网站贵阳seo计费管理
  • 企业网站设计一般多少钱呼和浩特最好的互联网公司
  • 黄浦专业做网站海南网站策划
  • 网站开发工程师有证书考试吗织梦cms是免费的吗