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

【Android】只给个泛型,如何自动初始化ViewModel与ViewBinding?这几种方案值得了解

我们才能在基类中正常的初始化 ViewModel 和 ViewBinding ,这是很好的封装方式,性能也好,没用到反射,其实已经很优秀了,你绝对可以使用这种方式封装。...混淆,这才是大问题,反射代码在混淆过程中我们需要额外的注意,因为类和成员的名称可能会被改变。如果不正确配置混淆规则,可能导致在运行时无法正确地通过名称找到相应的类、方法或字段,引发异常。...二、使用APT代码生成 其实相比ASM的字节码插桩,使用APT生成代码相对简单很多,我们可以生成对应的 ViewBinding 和 ViewModel 的初始化对象。...在你的代码中,你使用了auto-service库,并使用@AutoService注解和AutoService抽象类来自动生成META-INF/services文件,用于注册你的注解处理器。...*ViewModelInit { *; } 当然了,理论上我们可以直接在 ASM 字节码插桩生成的代码中直接在onCreate方法中自动调用给 mViewModel 和 mViewBinding 这两个固定的字段赋值

36310

Android MVVM框架搭建(十)Hilt、ViewBinding、Activity Result API

ViewModel使用   因为我们使用了MVVM,那么对于ViewModel的处理Hilt也是支持的,要怎么去做呢,首先需要在app/build.gradle中添加依赖,代码如下: // Hilt...我运行是没有问题的,那么后面的其他的ViewModel、Repository和Activity就依葫芦画瓢去改就好了,当然你要是改错了也不要慌,可以看我的源码,照着改就行。 3....很简单的,举个例子 我在我项目是有这个MMKV的使用,一个是库的初始化和工具类的初始化,这里我是直接写在BaseApplication的onCreate中,那么使用Hilt要怎么做呢?...我之前偷偷写过一个关于页面,因为这个不涉及到什么知识点,所以就没有在文章中写入,这次借助讲解ViewBinding可以说一下。 1....现在我们可以把HomeActivity中多余的代码和没用的注释都去掉了。

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

    关于ERP,中台和低代码,我的几点意见

    关于ERP,中台和低代码,我的几点意见 在中国大陆,ERP已经不再如同20年前那样新潮,火爆。...没有ERP系统作为底层核心业务系统的数据输入,采集,日常业务的处理,所谓的中台就成为无水之源,而低代码就更无从谈起。...说ERP已死,还不如说ERP已成熟稳重不如‘中台’与‘低代码’这样的高颜值的小鲜肉那样受人关注与追捧。企业可以没有中台,或者低代码,但是一定不能没有ERP。...企业信息化与数字化建设大潮中,无数新概念此起彼伏,‘中台’和‘低代码’就是非常典型的新概念。它们与ERP系统的关系是共存的,决不能取代ERP的。...应该说,ERP,中台,低代码可以在企业的不同发展阶段适时接入,解决企业发展不同阶段需要解决的问题。三者完全可以共存,共同为企业的进一步发展保驾护航。 -完- 2022-7-22写于苏州市。

    74420

    Android 视图绑定 ViewBinding

    介绍 我们以前获取xml中的View,通常通过findViewById但是样板代码太多,而且容易引用错误发生崩溃。...后续有很多自动注解方式来帮我们节省时间,其中butterknife可以算是典型代表了。 但后续Android 升级之后再依赖库中的R资源并不是find了。...配置完毕后,Gradle一下整个项目,AndroidStudio会自动为每个XML布局文件生成一个绑定类,并不需要我们给xml文件中添加任何代码。...(new View.OnClickListener() { viewModel.userClicked() }); 我们从此就不用害怕id写错了,或者引用其他布局中的view了。...1.3 Fragment中使用ViewBinding 如果是在Fragment中使用,大体上和Activity差不多。只是需要在onCreateView方法中进行初始化即可。

    1.5K10

    ViewBinding 与 Kotlin 委托双剑合璧

    请点赞关注,你的支持对我意义重大。 Hi,我是小彭。本文已收录到 GitHub · AndroidFamily[1] 中。 前言 大家好,我是小彭。...和 ButterKnife 需要在代码中声明很多变量,其他几种方案代码简洁度较好; 2、编译检查: 编译期间主要有两个方面的检查:类型检查 + 只能访问当前布局中的 id。...关于 Fragment 生命周期和事务在我之前的一篇文章里讨论过:[Android | Fragment 核心原理 & 面试题 (AndroidX 版本)](notion://www.notion.so...1、创建和回收 ViewBinding 对象需要重复编写样板代码,特别是在 Fragment 中使用的案例; 2、binding 属性是可空的,也是可变的,使用起来不方便。...但这会带来很多重复编写样板代码,使用属性委托可以收敛模板代码,保证调用方代码干净清爽。

    1.7K20

    JetpackNote---基于Jetpack的学习笔记APP

    背景 在我的Jetpack_Note系列中,对每一篇的分析都有相对应的代码片段及使用,我把它做成了一个APP,目前功能还不完善,代码我也上传到了GitHub上,参考了官方的Demo以及目前网上的一些文章...这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。 Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。...在Android Developers官网上,Jetpack作为一个Tab和Kotlin、Android Studio等一样的地位也同样占据了一个模块,Jetpack里目前包含的内容,未来想必也是谷歌大力维护和扩展的东西...这只是我对Jetpack学习的一些个人看法和想法啊,觉得有必要的你可以研究一下,反正到最后没有亏吃,是吧… 4. JetpackNote包含哪些内容 4.1 Navigation 1....通过点击 查看Fragment共享Demo 可以查看两个Fragment共享了同一个ViewModel中的SeekBar的值。 5. Jetpack源码解析—ViewModel基本使用及源码解析 ?

    1K30

    Android开发MVVM中DataBinding的使用

    List 和 Map,分别是 ObservableList 和 ObservableMap 该对象的属性会自带set和get方法,调用set方法即可实现页面控件绑定的数据自动刷新 public class...在布局文件中,data节点设置该点击事件对象,然后在控件的android:onClick="@{presenter.onClick}"属性中设置绑定即可。...{item.head}" /> ViewBinding与DataBinding区别 1)ViewBinding ViewBinding会根据xml布局文件自动生成对应的XXXBinding类,然后通过...XXXBinding.inflate(layoutInflater)生成一个对应的binding对象, 这个binding对象包含了这个xml布局文件中具有 ID 的所有视图对象,可以直接引用,省去了findViewById...ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) 2)DataBinding DataBinding是一个数据绑定库,它将xml布局中的界面组件绑定到代码中的数据对象

    34610

    “终于懂了“系列:Jetpack AAC完整解析(五)DataBinding 重新认知!

    目前,就学习使用的必要性和库的功能性 来说,WorkManager、Paging、Startup都是非必须的,DataStore还未正式发布,ViewBinding的能力也包含在DataBinding中...这里对 Jetpack AAC 及 MVVM ,做一些 补充 和 说明: 一、ViewModel 和 View 职责分离,ViewModel中处理业务逻辑,View 仅展示数据及传递事件 二、ViewModel...虽然整个系列是经过 阅读源码、实际使用、阅读其他优秀文章 之后输出的,但不免出现错误和遗漏,欢迎大家 留言讨论。 如果觉得文章还不错,想第一时间收到文章推送,欢迎关注我的公众号。...如果有问题或者想进群,号内有加我微信的入口,我可以拉你入群。在技术学习的道路上,我们一起前进!...你的 点赞、评论,是对我的巨大鼓励!

    1.5K10

    Android MVVM 架构应用实现

    MVVM架构使用的组件有ViewModel、LiveData、ViewBinding/DataBinding等,这些组件都是Jetpack库中的组件。...[MVVM架构图] 了解了MVVM的基本架构和其中各个组件的作用,可以开始代码实现了。我做这个项目的初衷是因为最近在整理收集Android常用的开源库,为了更方便的展示所实现的一个应用。...: 定义ViewModel,告诉Kioin从哪里找到ViewModel和Repository并自动生成,这里我选择直接写在BaseApplication中,需要注意的是需要定义在最外层,即和Classt...,在ViewModel中的数据改变时可以持续收到数据 homeViewModel.libraryRecommendData.observe(viewLifecycleOwner,...,第一次独立的搭建MVVM架构之后,对于MVVM架构的理解加深了不少,对于JetPack库中的组件和其它开源库也有了新的认识,此外MVVM架构还经常和Retrofit、RxJava等开源库配合使用,希望以后有机会可以再进行实践操作

    1.3K20

    Google推荐在Compose中使用collectAsStateWithLifecycle替代collectAsState

    以下代码片段演示了如何使用 collectAsStateWithLifecycle 来收集可组合函数中的 ViewModel 已暴露的 StateFlow 的 uiState 字段: @OptIn(ExperimentalLifecycleComposeApi...collectAsStateWithLifecycle 使您无需键入下面显示的样板代码,该样板代码还以生命周期感知的方式从可组合函数中收集流: @Composable fun AuthorRoute(....流的消费者和生产者不需要知道彼此是如何实现的。 在具有多个环境、变体、库和功能的大型应用程序中找出实现细节可能非常耗时。 更糟糕的是,维护依赖于实现细节的代码非常困难。...在后台保持资源活跃 Android 应用程序可以在无数的 Android 设备上运行。不幸的是,并非所有设备和所有用户都拥有无穷无尽的资源。应用程序通常在受限环境中运行。...如果被滥用,用户可能会卸载您的应用。 数据使用:在未连接到 Wi-Fi 时减少应用程序中的网络流量可以帮助用户节省资金。 内存使用:应用程序如何使用内存会对设备的整体稳定性和性能产生非常大的影响。

    3.5K20

    Android:Jetpack之视图绑定——ViewBinding

    历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者从最初的框架少、没规范、代码都得自己写,到轮子、框架满天飞。...; Emoji→ 即便用户没有更新Android系统也可以获取最新的表情符号; Auto(车)、TV、WearOS; Fragment→ 组件化界面的基本单位; Layout→ 用XML中声明UI元素或者在代码中实例化...3.ViewBinding基本用法 ViewBinding的作用:代替findViewById,还可以保证空安全和类型安全,支持Java。...[bad18e26d2ddf7bfcc8bc198889f1e3e.png] 基础用法很简单,也很好上手,但存在下述问题: 需重复编写:创建和回收ViewBinding实例的样板代码,特别是Fragment...另外,如果你想了解布局采集和写Layout部分的逻辑,可以参考 《ViewBinding 的本质》 笔者卷不动了...

    1.6K30

    再谈协程之viewmodel-livedata难兄难弟

    在这几个流程中,关于生命周期的控制,是AAC架构的一大亮点,众所周知,RxJava的内存泄漏问题,会让代码变得更加复杂,但ViewModel和LiveData,依附于Lifecycle,可以完整的在Activity...和Fragment等LifecycleOwner中获取到正确的状态,从而避免了各种内存泄漏问题,而且可以封装到代码无感知,业务使用者完全不需要处理生命周期就可以避免大部分的泄漏,在简化代码的同时,也提高了性能...借助委托,我们可以很方便的去除这类getXXX的代码,在Ktx中,提供了下面的委托来获取ViewModel,代码如下所示。...,我们就把ViewBinding,ViewModel,LiveData,协程,异常捕获,生命周期控制有机的融合到了一起,作为一个OneShot的UI界面,我们在极简代码的基础上,实现了良好的分层架构。...向大家推荐下我的网站 https://xuyisheng.top/ 点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问

    1.1K40

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

    Hilt 为了防止没听说过的小伙伴们一头雾水,首先我们来了解下Hilt是什么? Hilt是Android的依赖注入库,可减少在项目中执行手动依赖项注入的样板代码。...Hilt与Dagger的主要目标都是一致的: 简化 Android 应用的 Dagger 相关基础架构。 创建一组标准的组件和作用域,以简化设置、提高可读性以及在应用之间共享代码。...提供一种简单的方法来为各种构建类型(如测试、调试或发布)配置不同的绑定。 但是Android中会实例化许多组件类,例如Activity,因此在应用中使用Dagger需要开发者编写大量的样板代码。...Hilt可以减少这些样板代码。...如果你去对比看AwesomeGithub上的feat_dagger与feat_hilt两个分支中的代码,就会发现使用Hilt明显少了许多代码。对于简单的Android类来说就是增加几个注释而已。

    1.7K20

    DataBinding系列之基础使用

    1.前言 DataBinding, 又名数据绑定,是Android开发中非常重要的基础技术,它可以将UI组件和数据模型连接起来,使得在数据模型发生变化时,UI组件自动更新,从而节省了大量的代码和时间。...当布局文件被加载时,DataBinding会自动生成绑定代码,从而将UI组件和数据模型关联起来。 通过学习DataBinding基础知识,可以让你的代码速度翻倍,提高开发效率和代码质量。...因此,如果你希望在Android开发中获得更高的成功率和更快的发展速度,那么请务必学习DataBinding技术,掌握其基础知识,让自己成为一名高效率的Android开发者!...,如果我想访问布局中的TextView,我们可以这样写: binding?....上, 感兴趣的小伙伴可以下下来研究和学习。

    39330

    Android:Jetpack之视图绑定——ViewBinding

    历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者从最初的框架少、没规范、代码都得自己写,到轮子、框架满天飞。...; Emoji→ 即便用户没有更新Android系统也可以获取最新的表情符号; Auto(车)、TV、WearOS; Fragment→ 组件化界面的基本单位; Layout→ 用XML中声明UI元素或者在代码中实例化...3.ViewBinding基本用法 ViewBinding的作用:代替findViewById,还可以保证空安全和类型安全,支持Java。...[bad18e26d2ddf7bfcc8bc198889f1e3e.png] 基础用法很简单,也很好上手,但存在下述问题: 需重复编写:创建和回收ViewBinding实例的样板代码,特别是Fragment...另外,如果你想了解布局采集和写Layout部分的逻辑,可以参考 《ViewBinding 的本质》 笔者卷不动了...

    1.1K30

    Dropbox 是如何解决 Android App 的内存泄漏问题的?

    最新的 Android 模式,如 ViewModel 和 LifecycleObserver 可以帮助避免内存泄漏,但如果你遵循旧的模式或不知道要注意什么,很容易漏过错误。...注意,LeakCanary 会降低测试速度,因为它每次都会在其侦听的测试结束后转储堆。在我们的例子中,由于我们的选择性测试和分片设置,额外增加的时间可以忽略不计。...与代码检查一样,泄漏检测可以告诉你什么时候出现了代码气味或糟糕的编码模式。 它可以帮助工程师编写更健壮的代码——在本例中,我们知道了clearAllMocks()。...他们提供的代码片段建议我们做以下工作: private var _binding: ResultProfileBinding?...如果你怀疑自己遇到了暂时性泄漏,一个很好的检查方法是使用 Android Studio 的内存分析器。一旦在分析器中启动会话,就可以按步骤重现泄漏,但是在转储堆并检查之前要等待更长时间。

    95930

    MVVM归纳总结

    MVVM是Model-View-ViewModel的缩写。是谷歌推出的AAC(Android Architccture Components)中的组件实现的官方项目框架。...1、LifeCycle:主要是让自定义类继承它,通过在四大主件和application中绑定后,通过在LifeCycle它的子类中对自定义的方法加上生命周期注解后,实现对它父组件的生命周期进行监听。...当数据变化时,会回调的到该数据的监听方法中。LiveData一般就是与ViewModel结合,对ViewModel里面的数据套壳,对数据监听。还会与Room新数据库组件搭配使用,监听数据库数据变化。...3、ViewModel:类似于实现了数据持久化的一个类,继承于它的子类不用担心页面重建而丢失数据,会被保存,除非页面destory了。在里面也可以实现业务逻辑的处理。...6、DataBinding:不与LifeCycle和ViewModel使用,只是实现数据绑定,可单向也可双向。

    1K20
    领券