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

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

视图 View ; 二、LiveData 使用方法 ---- 首先 , ViewModel 视图模型 中定义 LiveData 数据 , MutableLiveData , class MyViewModel...ViewModel 中数据发生了改变 , 需要 主动通知 视图 View 进行修改 ; 使用 传统的开发方式 , 可以使用 线程通信 , Handler 或者 广播 等形式 , 子线程中通知主线程更新...定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData 数据类型 , 维护一个 Int 类型的数据 , 当该 Int 值发生改变时 , 会触发 LiveData...会触发 LiveData 设置的 Observer 监听器 ; package kim.hsl.livedatademo import androidx.lifecycle.MutableLiveData..., 可随时恢复数据 ; SeekBar 的拖动数据中 , 修改 ViewModel 中的 LiveData 数据 , 当数据修改时 , 对应的 Fragment2 中的 TextView 会刷新显示新的数据

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

Jetpack组件之LiveData

首语 ViewModel 以注重生命周期的方式存储和管理界面相关的数据,当数据发生变化时,可通过接口的方式通知页面,但是有很多数据要通知时,需要定义大量的接口显得十分冗余,为此,Jetpack提供了LiveData...LiveData 具有生命周期感知能力,它遵循其他应用组件( Activity、Fragment 或 Service)的生命周期。...当数据发生变化时,LiveData 会通知观察者对象,无需每次应用数据发生变化时更新界面。...更新页面的LiveData对象存储ViewModel中,而不将其存储Activity或Fragment中。...此外,如果观察者第二次从非活跃状态更改为活跃状态,则只有自上次变为活跃状态以来值发生了更改时,它才会收到更新。

80430

Android从零开始搭建MVVM架构(4)——LiveData

Observer对象订阅了LiveData对象,便会在数据发生变化时发出通知。 您通常需要UI控制器(Activity或Fragment)中注册Observer对象。...当你更新LiveData对象中存储的数据时,所有注册了的Observer,只要所绑定的LifecycleOwner处于活动状态,就会被触发通知。...创建LiveData对象 LiveData是一个包装器,可用于任何数据,包括实现Collections的对象,List。...MutableLiveData类暴露公用的setValue(T)和postValue(T)方法,如果需要编辑存储LiveData对象中的值,必须使用这两个方法。...由于没有Observer监听,所以没有理由继续保持与StockManager服务的连接。 setValue(T)方法更新LiveData实例的值,并通知活动观察者有关更改。

2.2K30

Android-ViewModel和LiveData使用详解

ViewModel类的设计目的是以一种关注生命周期的方式存储和管理与UI相关的数据。...LiveData会将观察者视为活动状态,并通知其数据的变化。LiveData未注册的观察对象以及非活动观察者是不会收到有关更新的通知。...LiveData在生命周期状态更改时通知Observer对象,更新这些Observer对象中的UI。观察者可以每次应用程序数据更改时更新UI,而不是每次发生更改时更新UI。...配置的改变 当前Activity配置改变(屏幕方向),导致重新从onCreate走一遍,这时观察者们会立刻收到配置变化前的最新数据。...后被触发的事件*/ @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState

3.4K30

Android  JetPack~ LiveData (一)   介绍与使用

LiveData它能感知绑定者的生命周期(Activity,Fragment),不会发生内存泄露,因为它只会给活跃状态的activity回调,我们使用的时候通常都会在回调里去更新UI。...下面代码讲解 抽象类,无法直接new 2、什么是MutableLiveData MutableLiveData的父类是LiveData 用法和LiveData类似,也是注册观察者回调里查看更新数据 可变...,setValue和postValue支持外部使用(public修饰) 普通类,可以直接new 3、LiveData与MutableLiveData区别 LiveData实体类里可以通知指定某个字段的数据更新...(下面会贴代码) MutableLiveData则是完全是整个实体类或者数据类型变化后才通知.不会细节到某个字段 4、LiveData的使用 public class UserBean extends...的使用 它是直接作用在变量上,mStr.setValue(s);触发观察者的回调。

1.5K20

开工!今天撸一波Jetpack下的Lifecycle、ViewModel和LiveData

arch.lifecycle包提供了Annotation,这意味着可以类中注释应该在某些生命周期事件中触发的方法。...④ ON_PAUSE:LifecycleOwner暂停时将触发此事件。 ⑤ ON_RESUME:LifecycleOwner恢复时触发此事件。...触发事件后,生命周期将进入一个状态,然后触发另一个事件时离开该状态并进入另一个状态。如下图所示: ?...其真正意义在于以下几个方面: ① 职责分离:使Activity/Fragment不用再负责从某些数据源获取数据,只需要负责展示数据就好,同时还消除了配置更改时保留数据对象实例的引用的责任。...④ 容易测试:职责的分离会使测试这些职责容易,而且还可以产生细粒度的测试用例。

1.5K10

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

解耦彻底,如果说之前是藕断丝连的话,现在就是一刀两断。...的setValue()的方式,还有一种方式是postValue(),这里要注意一点setValue()只能在主线程中调用,postValue()可以在任何线程中调用。...举个例子:比如我手机上收到一个通知,我需要显示通知的文字内容页面上,这就是单向绑定,而我页面上的文字内容改变也重新发一个通知出去,这就是双向绑定。可以理解为A和B进行交互。A发消息,B要做出反应。...上图的代码就是通过更改数据然后通知到xml做更改,初始化的修改时admin、123456。然后再通过输入框去修改。...第二个就是响应的地方,通过这种方式去显示ViewModel中对象的变量数据控件上。这里我把这两个TextView放到输入框的上方 第三个地方,也是双向绑定的意义,就是UI改变数据源。

14K86

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

解耦彻底,如果说之前是藕断丝连的话,现在就是一刀两断。...的setValue()的方式,还有一种方式是postValue(),这里要注意一点setValue()只能在主线程中调用,postValue()可以在任何线程中调用。...举个例子:比如我手机上收到一个通知,我需要显示通知的文字内容页面上,这就是单向绑定,而我页面上的文字内容改变也重新发一个通知出去,这就是双向绑定。可以理解为A和B进行交互。A发消息,B要做出反应。...上图的代码就是通过更改数据然后通知到xml做更改,初始化的修改时admin、123456。然后再通过输入框去修改。...第二个就是响应的地方,通过这种方式去显示ViewModel中对象的变量数据控件上。这里我把这两个TextView放到输入框的上方 第三个地方,也是双向绑定的意义,就是UI改变数据源。

2.2K32

Android程序员该如何去手写事件通信方案LiveDataBus

它具有以下特点: 数据可以被观察者订阅; 能够感知组件(Fragment、Activity、Service)的生命周期; 只有组件出于激活状态(STARTED、RESUMED)才会通知观察者有数据更新...7.资源共享 通过继承LiveData类,然后将该类定义成单例模式,该类封装监听一些系统属性变化,然后通知LiveData的观察者,这个继承LiveData中会看到具体的例子。...LiveData有几种使用方式: 使用LiveData对象 继承LiveData类 使用LiveData对象 使用LiveData对象主要有以下几个步骤: 创建保存特定数据类型的LiveData实例...LiveData中的数据变化,通过postValue(可后台线程)或者setValue(主线程)设置后,将触发Observer的onChanged,开发者只需onChanged等待最新数据回调即可。...这样带来的好处不仅可以编写更少的代码,而且可以完全杜绝其他通信总线类框架(EventBus、RxBus)忘记调用反注册所带来的内存泄漏的风险。

1.3K10

Spring使用 --- 基本概念(二):AOP,面向方面编程

本文讲述sprint的第二个基本概念: AOP,即面向方面编程 什么是面向方面编程 软件项目中,日志系统等服务系统被核心功能系统调用,日志系统的代码分散各处。...由此将原来混杂在一起的代码分离成单独的模块,代码质量提高,模块内聚性更高,核心模块专注于处理核心业务流程,而不需要关注不相关的东西,记录日志、考虑安全等因素。 通过面向方面编程,模块可以更加独立。...几个核心概念: 通知: 定义“什么”及“何时”。 “什么”表示这个通知要做什么事情(可以理解成一个函数),“何时”表示这个通知什么时候被触发。...Sprint只支持普通函数被调用时的AOP,不支持成员变量被修改时、或构造函数被调用时的AOP。因为Spring实现AOP的方式是通过动态的为核心系统类生成一个代理对象来实现的。...好处 更加精细的类划分,类容易重用 模块更加内聚,只关心自己确实需要做的事务,不相关的事务都可以提取为一个切面独立出来 可以不修改类定义的情况下,给类增加功能、修改功能

37950

Jetpack之LiveData详解

大多结合具有生命周期的组件一起使用( Activity、Fragment 或 Service,或实现了 LifecycleOwner 接口的对象)。...主要有如下两个作用: 实时刷新数据 防止内存泄漏 LiveData 采用的是观察者模式,当 LiveData 保存的数据发生变化时就会通知观察者,观察者接收到通知后可以进行 UI 数据刷新或者其他操作。...是实现了LifecycleOwner 接口的对象,比如 support 里的 AppCompatActivity 等 当我们对 simpleLiveData 数据进行更新时且观察者绑定的生命周期组件(...Activity / Fragment 等实现了LifecycleOwner 接口的对象)处于活跃状态即 STARTED 或 RESUMED 状态时就会触发 Observer 的回调从而更新 mTextView...比如点击按钮改变 simpleLiveData 的值为 “Hello LiveData” ,就会触发 Observer 的 onChanged 方法 mButton.setOnClickListener

1.6K20

AndroidJetpack Livedata应用场景分析

LiveData 只会将更新通知给活跃的观察者。为观察 LiveData 对象而注册的非活跃观察者不会收到更改通知。 您可以注册与实现 LifecycleOwner 接口的对象配对的观察者。...) 代码中 mapLiveData 是对 userLivedata 进行转换得到的,所以当我们调用 sendData 方法更新 userLivedata 中的方法时,mapLiveData 的回调也会触发...bserveForever observeForever 方法也是注册 Livedata 监听的方法,表示即使应页面被覆盖处于不活跃状态也可以收到数据改变的回调 Livedata 和协程联合使用 emit 方式使用...引入依赖 有时候你可能需要处理异步任务,任务处理完成后刷新 ui 这种情况可以使用 Livedata 的扩展程序实现 本例我们实现下面的逻辑: viewmodel 中阻塞 4s,然后通知 activity...Int): LiveData = liveData { delay(second * 1000L) emit("倒计时结束")//用来触发数据回调

1K20

Android技术栈(四)Android Jetpack MVVM 完全实践

MVVM中View不是数据的实际持有者,它只负责数据如何呈现以及点击事件的传递,不做的数据处理工作,而数据的处理者和持有者变成ViewModel,它通过接收View层传递过来的时间改变自身状态,发出事件或者改变自己持有的数据触发...Java实化DataBinding风格xml布局与传统方式有所不同....ViewModelProviders.of(this, factory).get(NaviViewModel.class); 说白了就是反射调用构造函数创建,也是一目了然. 6 RxJava 本篇文章只是针对响应式编程...RxJavaMVVM中主要用于发布事件,下面是需要注意的一些点. 6.1 使用AutoDispose RxJava是响应式编程这种思想在JVM这个平台上的实现,所以它一开始并没有为Android平台的特点而做出优化...设计原则: 涉及Activity请一定不要包含进来,WindowManager,它们属于View层.

3.7K01

Android  JetPack~ ViewModel (一)   介绍与使用

设备信息发生变更数据不会丢失(切横竖屏),其实它只有一个生命周期,检测页面销毁时触发 ViewModel 的另一个特点就是同一个 Activity 的 Fragment 之间可以使用ViewModel实现共享数据...网络请求时,突然销毁activity,那么与之绑定的viewmodel也会销毁,同时我们onCleared()方法中取消网络连接接口(call.cancel()),就算是有数据返回,activity也不会收到通知...,因为数据是从livedata中监听的,只有livedata触发了更新,Activity才会收到通知。...这个方式比较老了,源码中也能发现,ViewModelProviders的of方法其实也是调用了ViewModelProvider,自动创建了一个factory。... mStr= new MutableLiveData(); public MutableLiveData getmStr() { return

51540

Android Jetpack架构组件(三)之ViewModel

Android开发中,由于应用相对较小,页面相对简单,我们会将数据请求、页面UI处理和数据加载全部放在Activity或Fragment中进行,但是随着项目的迭代,这种开发方式显得越来越臃肿,并且也不易于项目的维护和扩展...ViewModel层:关联层,用于将Model和View进行绑定,当Model发生更改时,即时通知View进行刷新,当然,也可以反向通知。...public class MyViewModel extends ViewModel { private MutableLiveData user; public LiveData...Fragment 之间共享数据 public class SharedViewModel extends ViewModel { private final MutableLiveData...众所周知,Android横竖屏切换时会触发onSaveInstanceState,然后还原时则会触发onRestoreInstanceState。

1.3K00
领券