首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android Architecture Components Part4:ViewModel

    在ContactsViewModel中我们结合MutableLiveData来更好的管理数据的变化更新。 ViewModel创建好了,接下来只剩下在Activity中进行使用。...对象来获取到相应的ViewModel实例。...只要Activity对象没有改变,同时都是同一个ViewModel的Class对象,那么我们无论何时获取的都是同一个ViewModel实例。...在这里它通过Class的getConstructor()方法获取匹配的Constructor对象,然后再通过newInstance()方法来获取匹配的对象实例。...我们通过Room可以快速方便的实现本地数据存储;结合LiveData来观测数据的更新变化与及时反映到UI层;同时使用Lifecycle来让我们的组件或数据容器的具备生命感知能力,帮助我们的减少生命状态的处理与异常错误的发生

    56720

    Android Jetpack - ViewModel

    、检测到了 SIM 并更新了 MNC、布局方向发生了变化等十几种情况,发生这些情况时系统默认会关闭并重建 Activity ,这就导致了上面数据莫名其妙消失的问题。...而我们传统的处理办法就是在配置变更期间保留对象和自行处理配置变更这两种,这两种方式都有很多坑(看看官方文档就知道了),尤其是需要恢复的数据比较多的时候,而 ViewModel 就非常适合处理这些情况 在下图中...,因为大部分情况 ViewModel 的生命周期比它们都长,持有一个已经销毁对象的引用意味着内存泄露,对于必须使用 Context 的 ViewModel 可以继承 AndroidViewModel 类...,AndroidViewModel 中包含 Application 的引用 class MainActivity : AppCompatActivity() { private val viewModel...elapsedTime 的值为当前时间距离 startTime 的秒数,此处 elapsedTime 为 LiveData 类型,它会随着 ViewModel 初始化开始通过 Timer 自动更新,下一步我们只需要在

    87620

    Jetpack--LifeCycle、ViewModel、LiveData

    Jetpack是google官方的安卓开发工具集,目的是为了标准化和加快开发效率,并且之后会持续更新 安卓开发中,google推荐使用MVVM架构,Jetpack集成了构建MVVM架构的几种工具,相比于以前的...AAC(Android Architect Component)中的组件并入AndroidX 其他一些需要频繁更新和迭代的特性也并入AndroidX 一、LifeCycle LifeCycle会自动绑定组件的生命周期...textView.setText(String.valueOf(numberViewModel.number)); } } 效果: 如果要在ViewModel中使用Context,不要手动传入,而是继承至AndroidViewModel...,需要结合LiveData使用,ViewModel的生命周期是独立于Activity的 三、LiveData LiveData对象提供了可观测方法,当数据发送改变时,观测方能够观测到,并且线程安全,集成了...LifeCycle的绑定生命周期特性 1.来实现一个定时器,线程中更新定时时间,使用LiveData使得ui上进行更新 布局文件很简单,一个TextView <?

    1.7K20

    Paging在RecyclerView中的应用,有这一篇就够了

    这是因为,它会将数据统一封装成一个PagedList对象,而adapter持有该对象,一切数据的更新与变动都是通过PagedList来触发。...这样的好处是,我们可以结合LiveData或者RxJava来对PagedList对象的创建进行观察,一旦PagedList已经创建,只需将其传入给adapter即可,剩下的数据操更新操作将由adapter...使用DataSource.Factory来获取Room中的数据 使用LiveData来观察PagedList 使用PagedListAdapter来与数据进行绑定与更新 2.1 DataSource.Factory...PagedListAdapter与RecyclerView.Adapter的使用区别不大,只是对getItemCount与getItem进行了重写,因为它使用到了DiffUtil,避免对数据的无用更新。...LiveData对象即可,由于本身其成员就是LiveDate对象,所以分离也是非常简单。

    1.3K20

    Android Architecture Components Part2:LiveData

    既然它是可观察数据容器与具备生命感知能力,那么它的优点也很明显,可以归纳与以下几点 确保ui跟随数据更新 具备生命感知能力从而减少内存泄露 防止异常crashs 无需管理绑定者的生命周期 ui获取的数据都是最近最终的更新数据...例如界面数据的更新,当数据发生变化时,我们要通知界面进行更新ui,这时我们可以使用LiveData在当前Activity/Fragment中对该数据注册一个观察者,实时监听数据的任何改动。...如果你一直处于后台且数据一直在变化,LiveData是不会发生通知,只有在界面再一次回到前台,这时LiveData才会发生通知且只会发送一次,数据的更新取的是最后一次的变化数据。...第二个参数是一个回调方法,一旦数据发生变化它的onChanged()就会回调,并将数据带回,这样界面就能实时更新数据。...这样就可以是我们的监听器具备生命感知能力。避免不必要的内存泄露或者一次crash。同时一旦监听器的回调方法生效时,我们又可以通过LiveData的setValue()来对观察者进行数据的更新。

    56220

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

    本文字数较多,内容较为完整并且后续还会追加更新,阅读本篇文章需要较长时间,建议读者分段阅读....这也将导致但你想把某个界面上的元素进行更新时,他会牵扯到一堆跟Model层相关的代码,这个问题在你变更Model层的时候同样也会出现,这个问题其实是没有很好的将逻辑分层导致的. 1.2.2 MVP MVP...View的更新....在之前给xml中的变量中赋值时,我们用的都是一些类似String的简单对象,其实我们也可以定义一些复杂的对象,一次性传递到xml布局中 //java public class File { public...,它也能接受MutableLiveData和ObservableField作为赋值对象,这种赋值会将TextView的android:text的变化绑定到LiveData

    3.9K01

    Paging在RecyclerView中的应用,有这一篇就够了

    这是因为,它会将数据统一封装成一个PagedList对象,而adapter持有该对象,一切数据的更新与变动都是通过PagedList来触发。...这样的好处是,我们可以结合LiveData或者RxJava来对PagedList对象的创建进行观察,一旦PagedList已经创建,只需将其传入给adapter即可,剩下的数据操更新操作将由adapter...使用DataSource.Factory来获取Room中的数据 使用LiveData来观察PagedList 使用PagedListAdapter来与数据进行绑定与更新 2.1 DataSource.Factory...PagedListAdapter与RecyclerView.Adapter的使用区别不大,只是对getItemCount与getItem进行了重写,因为它使用到了DiffUtil,避免对数据的无用更新。...LiveData对象即可,由于本身其成员就是LiveDate对象,所以分离也是非常简单。

    97150

    响应式架构最佳实践——MVI

    这一原则与面向对象编程的单一责任原则密切相关,该原则指出:"每个模块、类或函数都应该对软件所提供的功能的单一部分负责,而且该责任应该完全由类、模块或函数封装。"...Model独立于视图对象和应用程序组件,所以它们不受应用程序的生命周期和相关关注点的影响。 让我们也来看看一些流行的架构模式的总结。...Model负责管理应用程序的数据。它接收来自controller的输入。 View意味着以特定的格式展示Model。 controller对用户的输入做出反应,并对数据Model对象进行交互。...总之,MVVM架构最好的部分是ViewModel,但我认为它没有遵循MVC模式中定义的Model概念,因为在MVVM中,DAO(数据访问对象)的抽象被认为是Model,视图观察来自ViewModel的多个可观察属性的状态变化...), ViewModelContract { private val _viewStates: MutableLiveData = MutableLiveData(

    1.8K20
    领券