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

知识点 | ViewModel 四种集成方式

支持 JavaKotlin onSaveInstanceState 带来的挑战 ViewModel 一发布,执行 onSaveInstanceState 的相关的逻辑时要如何操作 ViewModel...对应 Activity 实例被永久关闭; Activity 配置 (configuration) 被改变: 例如,旋转屏幕等操作,会使 Activity 需要立即重建; 应用在后台时,其进程被系统杀死:...ViewModel 与 Jetpack 导航: 在 NavGraph 中使用 ViewModel 于 navigation 的 2.1.0-rc01 版本时加入 支持 JavaKotlin 共享...想要创建嵌套导航图,您需要选中对应流程相关的界面,点击鼠标右键,并选择 Nested Graph → New Graph: △ 创建嵌套导航图的截图 注意嵌套导航图在 XML 文件中的 id,在这里是...版本时加入 支持 JavaKotlin 移除 LiveData 相关的模板代码 ViewModel、LiveData 与 Data Binding 的集成方式并不是什么新功能,但它始终非常好用。

2.4K20

知识点 | ViewModel 四种集成方式

支持 JavaKotlin onSaveInstanceState 带来的挑战 ViewModel 一发布,执行 onSaveInstanceState 的相关的逻辑时要如何操作 ViewModel...对应 Activity 实例被永久关闭; Activity 配置 (configuration) 被改变: 例如,旋转屏幕等操作,会使 Activity 需要立即重建; 应用在后台时,其进程被系统杀死:...ViewModel 与 Jetpack 导航: 在 NavGraph 中使用 ViewModel 于 navigation 的 2.1.0-rc01 版本时加入 支持 JavaKotlin 共享...想要创建嵌套导航图,您需要选中对应流程相关的界面,点击鼠标右键,并选择 Nested Graph → New Graph: △ 创建嵌套导航图的截图 注意嵌套导航图在 XML 文件中的 id,在这里是...版本时加入 支持 JavaKotlin 移除 LiveData 相关的模板代码 ViewModel、LiveData 与 Data Binding 的集成方式并不是什么新功能,但它始终非常好用。

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

360度无死角,Android Jetpack面试技巧大揭秘

相对于传统Fragment事务,Navigation组件的优势在于: 导航图的可视化: 使用导航图直观展示应用中的导航流程,方便理解和修改。...类型安全: 利用Kotlin的类型安全特性,减少在导航时的错误。 生命周期感知: 自动处理Fragment的生命周期,避免了一些常见的生命周期相关问题。...出发点: 在解答这个问题时,不仅要强调ViewModel的用途,还要深入讨论其在Android架构中的角色和优势。...参考简答: ViewModel的作用在于解决Android应用中活动和碎片(Fragment)的生命周期问题。它允许数据在屏幕旋转等配置更改时存活,并确保数据在不同组件之间共享而不丢失。...数据共享:通过ViewModel,可以在不同的UI组件之间共享和管理数据,避免重复加载或丢失数据。 状态保存:ViewModel在配置变更时保持其状态,例如屏幕旋转,避免重新加载数据和执行耗时操作。

14710

Android 面试题:为什么 Activity 都重建了 ViewModel 还存在?—— Jetpack 系列(3)

; 参数 2 Factory: 它对应ViewModel 的创建工厂,缺省时将使用默认的 NewInstanceFactory 工厂来反射创建 ViewModel 实例。...关于 Kotlin 委托属性的更多内容,我们在 Kotlin | 委托机制 & 原理 & 应用[11] 这篇文章讨论过,这里不重复。...= null } 2.3 ViewModel 如何实现不同的作用域 ViewModel 内部会为不同ViewModel 宿主分配不同的 ViewModelStore 映射表,不同宿主是从不同的数据源来获取...这样就实现了不同的 Activity 或 Fragment 分别对应不同的 ViewModelStore 实例,进而区分不同作用域。...映射表中); LiveData: 保留旧的实例(因为 LiveData 是 ViewModel 的成员变量); 现在,我们逐一分析这 3 个阶段的源码执行过程: 阶段 1 源码分析: Activity.java

1.1K20

谷歌官方组件Navigation你会用了吗?

及以上版本,有很多不同之处。...:navigation-fragment:$nav_version" // use -ktx for Kotlin implementation "android.arch.navigation...:navigation-ui:$nav_version" // use -ktx for Kotlin } 创建导航图 导航是发生在应用的目标示图之间——用户可以导航到应用当中的任何的位置。...然后我们直接拖NavHostFragment 的视图到我们的activity文件当中 在导航视图当中添加目标视图 这里总共有三种不同的方式可以在我们的导航视图当中添加目标视图 添加已经存在的目标视图 如果我们想把已经存在的目标视图想要添加在导航图当中...如果我们没有使用app:popUpToInclusive =“true”那么也意味着我们的堆栈当中包含两个A的实例

1.1K10

实践 | Google IO 应用是如何适配大尺寸屏幕 UI 的?

在程序运行过程中,我们可以通过 Kotlin 的安全调用操作符 (?.) 来根据当前的设备配置确定呈现给用户哪一个视图。...由于 Google I/O 应用使用了 Jetpack Navigation 实现不同界面之间的切换,这个挑战对导航图有怎样的影响,我们又该如何记录当前屏幕上的内容呢?...至于导航图,日程的目的地页面现在是双窗格 Fragment,而每个窗格中可以展示的目的地都已经被迁移到新的导航图中了。...不过,我们不能直接从会议列表导航到会议详情,因为两者如今已经被放到了不同的窗格中,也就是存在于不同的导航图里。...我们的替代方案是让会议列表和双窗格 Fragment 共享同一个 ViewModel,其中又包含了一个 Kotlin 数据流。

2K20

Android开发笔记:Retrofit + OkHttp3 + coroutines + LiveData打造一款网络请求框架

Android开发的重新定义,含糊不清的态度,既不丢弃Java又宣布kotlin 是首选语言。...其中ViewModel - LiveData 已经得到了广大开发者的认可,ViewModel 和LiveData 的结合,使得Android中数据可控性变得更好,耦合度更低,简单来说是官方将观察者模式用于到了真个数据结构中...,在这里也是将要结合其他框架来完成网络框架的设计 coroutines kotlinJava的最大变化就是kotlin推出的coroutines (协程),协程完全可以替代RxJava, Thread...一般在使用ViewModel 的时候都是于一个或者一组逻辑相关的页面对应,将数据更加独立、清晰 class MainViewModel(private val mainRepository: MainRepository...基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助我们深刻理解Android相关知识点的原理以及面试相关知识。

2.1K30

架构组件之 ViewModel | 中文教学视频

架构组件之 ViewModel | 中文教学视频 在视频的代码示例中,我们使用了 Kotlin 来创建 ViewModel, 创建 ViewModel 方法如下: 在 build.gradle 文件里加入生命周期管理库...(Lifecycle); 继承 ViewModel 类; 使用 ViewModelProviders 来关联 ViewModel 和相对应的UI组件 接着把曾经保存在 UI 界面中的数据剥离出来...,使用 ViewModel 来管理这些数据。...另,生命周期管理库 LiveData 和 Room 视频即将上线,敬请期待 更多详细内容介绍,请访问以下文档链接 架构组件的官方开发者文档 ViewModel 的文档 应用程序架构指南 使用生命周期管理库的架构组件实例...-Java 使用生命周期管理库的架构组件实例 - Kotlin 架构组件实例 ViewModelFactory 实例 Android 生命周期备忘录 视频播放列表地址 腾讯视频链接 优酷链接 YouTube

1.4K30

上手指南 | Jetpack Hilt 依赖注入框架

这些组件会自动集成到 Android 程序中的生命周期中。在使用的时候可以指定使用的范围,事情作用在对应的生命周期当中。...Hilt 有关如何提供不同类型的实例信息也称之为绑定 @Module module 是用来提供一些无法用 构造@Inject 的依赖,如第三方库,接口,build 模式的构造等。...Hilt 提供了以下组件来绑定依赖与对应 Android 类的活动范围 Hilt 组件 对应 Android 类活动的范围 ApplicationComponent Application ActivityRetainedComponent...Hilt 中组件的生命周期 Hilt 会根据相应的 Android 类生命周期自动创建和销毁组件的实例对应关系如下: Hilt 提供的组件 创建对应的生命周期 结束对应的生命周期 作用范围 ApplicationComponent...@Module 模块用于向 Hilt 添加绑定,告诉 Hilt 如果提供不同类型的实例

1.6K20

Kotlin + 协程 + Retrofit + MVVM优雅的实现网络请求

前言 最近一直闭关修炼Kotlin,说实话真香真好用,刚好公司准备交给我一个新项目,于是打算直接用Kotlin来构建项目。刚好整体架构搭建完毕了,于是把网络请求这一部分先分享给大家。...只有各司其职才能把工作干好嘛,接下来咱们就围绕着各司其职来一个一个实现 协程实现 接下来把上面的请求换成协程的方式来实现 1.创建RetrofitClient object为了使RetrofitClient 只能有一个实例...MVVM,所以还用到了Android 新引入的组件架构之ViewModel和LiveData,先看ViewModel的实现 class ScrollingViewModel : ViewModel()...针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术...需要展开的架构学习笔记图的加群免费获取 Android架构设计大群(185873940) ?

5.1K50

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 ) 中 , 实现了 使用 Room 框架访问 Android 中的 SQLite 数据库的操作...插件 和 Kotlin 注解插件 ; plugins { id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' } 导入 Room 依赖库..., 注意这是 Kotlin 版本需要导入的依赖库 , 如果是 Java 版本 , 需要导入另外的注解处理器 ; // 导入 Room 依赖库 implementation 'androidx.room...{ id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' } android..., 表名为 student * 该数据库表中的数据对应一个 Student 类实例对象 */ @Entity(tableName = "student") class Student { /

57220

Android Hilt实战初体验: Dagger替换成Hilt

提供一种简单的方法来为各种构建类型(如测试、调试或发布)配置不同的绑定。 但是Android中会实例化许多组件类,例如Activity,因此在应用中使用Dagger需要开发者编写大量的样板代码。...文件中添加以下依赖项: ... apply plugin: 'kotlin-kapt' apply plugin: 'dagger.hilt.android.plugin' android {...它会自动帮我们生成对应Android类的Componennt,并将其添加到Application类中。...对应的生命周期如下 ? 同时还提供了相应的作用域 ? 所以Hilt的默认提供将大幅提高开发效率,减少许多重复的定义 ViewModel 最后再来说下ViewModel的注入。...虽然自定义的ViewModelFactory是公用的,但是对于不同ViewModel还是要手动定义不同的bindViewModel方法。

1.6K20

Jetpack Hilt 依赖注入框架上手指南

这些组件会自动集成到 Android 程序中的生命周期中。在使用的时候可以指定使用的范围,事情作用在对应的生命周期当中。...Hilt 有关如何提供不同类型的实例信息也称之为绑定 @Module module 是用来提供一些无法用 构造@Inject 的依赖,如第三方库,接口,build 模式的构造等。...Hilt 提供了以下组件来绑定依赖与对应 Android 类的活动范围 Hilt 组件 对应 Android 类活动的范围 ApplicationComponent Application ActivityRetainedComponent...Hilt 中组件的生命周期 Hilt 会根据相应的 Android 类生命周期自动创建和销毁组件的实例对应关系如下: Hilt 提供的组件 创建对应的生命周期 结束对应的生命周期 作用范围 ApplicationComponent...@Module 模块用于向 Hilt 添加绑定,告诉 Hilt 如果提供不同类型的实例

1.4K20
领券