大放光彩的安卓Jetpack组件-ViewModel(二)

简介: 上回我们说到使用方法,但没有具体去说明使用的要点,其实ViewMode还是挺容易上手的,这节我们来具体说明一些使用要点与运用方式。

正篇

要点一

上节我们说到使用方法先是创建了继承ViewModel的类然后在Activity中使用,其中我们通过下面代码去获取实例:

viewModel = ViewModelProvider(this).get(MainViewModel::class.java)

这里需要注意的就是,我们绝对不能直接去创建ViewModel的实例,而是要像上面代码一样,一定要通过ViewModelProvider来获取ViewModel的实例,具体的语法规则如下所示:

ViewModelProvider{<Your Activity or fragment 实例>}.get{<Your ViewModel>::class.java}

解释一下这么写的原因,之前我们说到过ViewModel在横竖屏数据存留方面有应用是因为有和Activity不同的生命周期,这里的原因就是如此,ViewModel有其独立的生命周期,并且其生命周期还要长于Activity。如果此时我们在onCreate()方法中创建出ViewModel实例,那么每次onCreate()方法执行时,ViewModel都会去创建一个新实例,这样在手机屏幕发生旋转的时候,也就和Activity一样无法保留其中的数据。

要点二

其实ViewModel我们只是利用了其生命周期,但不可能每次我们构造函数中都没有任何参数,我们还是需要通过构造函数去传递一些参数的,那么怎么办呢?

我们可以去使用ViewModelProvider.Factory实现,如下:

class MainViewModel(countReserved: Int) : ViewModel() {
    var counter = countReserved
}
class MainViewModelFactory(private var countReserved: Int) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        return MainViewModel(countReserved) as T
    }
}

因为此处create()方法的执行时机与Activity的生命周期无关,所以不会出现activity中直接创建ViewModel实例所出现的问题。

小结

下节我们将继续探索ViewModel,看看ViewModelProvider.Factory实现在Activity中的部分。

相关文章
|
1天前
|
存储 设计模式 数据库
构建高效的安卓应用:探究Android Jetpack架构组件
【4月更文挑战第20天】 在移动开发的世界中,构建一个既高效又可维护的安卓应用是每个开发者追求的目标。随着Android Jetpack的推出,Google为开发者提供了一套高质量的库、工具和指南,以简化应用程序开发流程。本文将深入探讨Jetpack的核心组件之一——架构组件,并展示如何将其应用于实际项目中,以提升应用的响应性和稳定性。我们将通过分析这些组件的设计原则,以及它们如何协同工作,来揭示它们对于构建现代化安卓应用的重要性。
|
1天前
|
存储 移动开发 数据库
构建高效Android应用:探究LiveData和ViewModel的最佳实践
【4月更文挑战第20天】 在动态演化的移动开发领域,构建一个既响应迅速又能够在用户界面保持稳定的Android应用是至关重要的。近年来,随着Android架构组件的推出,特别是LiveData和ViewModel的引入,开发者得以更有效地管理应用状态并优化用户界面的响应性。本文将深入探讨LiveData和ViewModel的实现机制,并通过案例分析展示如何结合它们来构建一个高效且健壮的Android应用架构。我们将重点讨论如何通过这些组件简化数据绑定过程、提高代码的可维护性和测试性,同时确保用户界面的流畅性。
|
1天前
|
Java 开发工具 Android开发
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
15 4
|
17小时前
|
Android开发 算法 架构师
android的基础ui组件,这些知识点你会吗
android的基础ui组件,这些知识点你会吗
android的基础ui组件,这些知识点你会吗
|
17小时前
|
Android开发 缓存 双11
android的基础ui组件,Android开发社招面试经验
android的基础ui组件,Android开发社招面试经验
android的基础ui组件,Android开发社招面试经验
|
1天前
|
安全 Android开发 开发者
构建高效Android应用:采用Kotlin与Jetpack的实践指南
【4月更文挑战第30天】 在移动开发领域,随着技术的不断进步,为了提高应用的性能和用户体验,开发者们不断地探索新的工具和框架。对于Android平台而言,Kotlin语言以其简洁性和功能性成为了开发的首选。而Jetpack组件则提供了一套高质量的库、工具和指南,帮助开发者更轻松地构建高质量的应用程序。本文将探讨如何结合Kotlin语言和Jetpack组件来优化Android应用的开发流程,提升应用性能,并保证代码的可维护性和可扩展性。
|
1天前
|
数据库 Android开发 开发者
构建高效Android应用:采用Kotlin与Jetpack的实践指南
【4月更文挑战第30天】 随着移动开发技术的不断演进,Android平台提供了多种工具和框架以提升应用性能和开发效率。在本文中,我们将深入探讨如何结合Kotlin语言的简洁性和Android Jetpack组件的强大功能来构建一个既高效又可维护的Android应用。通过分析现代Android应用架构的关键要素,我们将展示如何利用Kotlin的特性以及如何整合Jetpack中的LiveData、ViewModel和Room等组件,以实现响应式编程、数据持久化和生命周期管理。
|
1天前
|
存储 数据库 Android开发
构建高效Android应用:采用Kotlin与Jetpack的实践指南
【4月更文挑战第29天】 在现代移动开发领域,构建一个既高效又稳定的Android应用对于开发者来说是一个持续的挑战。随着技术的不断进步和用户需求的日益增长,传统的开发方法已不足以满足市场的要求。本文将深入探讨如何结合Kotlin编程语言以及Android Jetpack组件,来提升Android应用的性能、稳定性及开发效率。通过分析Kotlin的优势、介绍Jetpack的核心组件,并结合实际案例,我们将展示如何在实际项目中应用这些技术,以期达到优化应用架构、提高代码质量和加快开发流程的目的。
21 1
|
1天前
|
设计模式 前端开发 数据库
构建高效Android应用:使用Jetpack架构组件实现MVVM模式
【4月更文挑战第21天】 在移动开发领域,构建一个既健壮又易于维护的Android应用是每个开发者的目标。随着项目复杂度的增加,传统的MVP或MVC架构往往难以应对快速变化的市场需求和复杂的业务逻辑。本文将探讨如何利用Android Jetpack中的架构组件来实施MVVM(Model-View-ViewModel)设计模式,旨在提供一个更加模块化、可测试且易于管理的代码结构。通过具体案例分析,我们将展示如何使用LiveData, ViewModel, 和Repository来实现界面与业务逻辑的分离,以及如何利用Room数据库进行持久化存储。最终,你将获得一个响应迅速、可扩展且符合现代软件工
26 0
|
1天前
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
什么是Android Jetpack,它包括哪些组件?
45 0