首页
学习
活动
专区
圈层
工具
发布

Kotlin 委托属性在Android开发中的几个使用场景!

这让我们可以把属性的 getter-setter 逻辑从属性声明的地方移动到(或者说委托给)另一个类,以达到逻辑复用的目的。...如你所见,委托属性并没有什么神奇的。但是,它虽然简单,却非常有用,让我们来看一些在 Android 开发中的例子。 你可以在官方文档中了解更多关于委托属性的内容。...ReadWriteProperty 是一个接收两个类型参数的泛型接口。我们把第一个设置成Fragment,即保证这个委托只能用于Fragment的属性。...Kotlin Android Extension的视图绑定来获取布局中的控件。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性的例子。当然了,你也可以用别的方式来使用它。 这篇文章的目标是展示委托属性是多么强大,以及我们可以用它做什么。

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

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

    比如你一个界面数据由多个接口串联、并联组合起来,或者经过多次变换,再或者需要不断更新,这样的需求才是「异步数据流」,而平时大部分的业务开发,都是一个接口完事,所以,这样的需求使用Flow,就有点大材小用了...架构的推荐方式就是: Activity中获取ViewModel ViewModel中通过LiveData管理数据 Activity中通过ViewModel获取LiveData订阅数据 这种方式的好处就是比...和Fragment等LifecycleOwner中获取到正确的状态,从而避免了各种内存泄漏问题,而且可以封装到代码无感知,业务使用者完全不需要处理生命周期就可以避免大部分的泄漏,在简化代码的同时,也提高了性能...借助委托,我们可以很方便的去除这类getXXX的代码,在Ktx中,提供了下面的委托来获取ViewModel,代码如下所示。...使用的时候,viewModels的委托已经给出了自定义Factory的入口。

    1.3K40

    如何使用AndroidQF快速从Android设备中获取安全取证信息

    关于AndroidQF AndroidQF,全称为Android快速取证(Android Quick Forensics)工具,这是一款便携式工具,可以帮助广大研究人员快速从目标Android设备中获取相关的信息安全取证数据...AndroidQF旨在给广大研究人员提供一个简单且可移植的跨平台实用程序,以快速从Android设备获取信息安全取证数据。...它的功能有些类似于mvt-android,但是跟MVT相比,AndroidQF的优势就在于它可以让很多不懂技术的用户也能够轻松地使用。...工具使用 在启动AndroidQF之前, 我们需要将目标Android设备通过USB线连接到我们的主机上,别忘了开启USB调试功能。 启动USB调试之后,我们就可以继续启动AndroidQF了。...获取到加密的取证文件之后,我们可以使用下列方式进行解密: $ age --decrypt -i ~/path/to/privatekey.txt -o .zip .zip.age

    9.3K30

    Android Jetpack - Room

    使用@Database注释的类应满足以下条件: 继承了 RoomDatabase 的抽象类 在注解中包含与数据库相关联的实体类列表 包含一个无参抽象方法,并返回使用 @Dao 注释的类。...在运行时,你可以通过调用 Room.databaseBuilder()或 Room.inMemoryDatabaseBuilder()来获取 Database 实例 Entity 数据库中的表...DAO 包含用于访问数据库的方法 该应用程序使用 Room 数据库来获取与该数据库关联的数据访问对象或 DAO。...然后,应用程序使用每个 DAO 从数据库中获取实体,并将对这些实体的任何更改保存回数据库。最后,应用程序使用实体来获取和设置与数据库中的表列对应的值 Room 组件关系图 ?...在最常见的示例中,Repository 实现了用于决定是从网络获取数据还是使用在本地数据库中缓存的结果的逻辑,既避免了 ViewModel 和数据的直接交互又统一了单一真实数据源的逻辑 Repository

    2.2K70

    Android Compose开发

    此外,当两项更新以出人意料的方式发生冲突时,也很容易造成异常状态。例如,某项更新可能会尝试设置刚刚从界面中移除的节点的值。一般来说,软件维护的复杂性会随着需要更新的视图数量而增长。...remember 和 mutableStateOf 在 Composable 函数中几乎永远都是配套使用的。 使用 by 关键字替代了之前的等号,用委托的方式来为 count 变量赋值。...pagingSourceFactory 函数用于创建一个实现 PagingSource 接口的数据源。...然后使用 cachedIn () 函数,将流缓存在 viewModelScope 中,以便在组件重新合成时保留数据状态。...综上所述,这段代码的作用是创建一个可流式访问的分页数据流,并将其缓存在 viewModelScope 中,以便在组件生命周期内保留数据状态。

    1K10

    【Kotlin 协程】协程底层实现 ③ ( 结构化并发 | MainScope 作用域 | 取消协程作用域 | Activity 实现 CoroutineScope 协程作用域接口 )

    文章目录 一、MainScope 协程作用域 二、取消 MainScope 协程作用域 三、Activity 实现 CoroutineScope 协程作用域接口 常见的 CoroutineScope..., 如果 Activity 被销毁 , 则 在 onDestory 生命周期函数中取消协程任务 ; viewModelScope : 该作用与仅在 ViewModel 中使用 , 与 ViewModel...是一个 函数 , 其返回值类型为 CoroutineScope 协程作用域 ; 这是使用了设计模式中的 工厂模式 , 生产一个 协程作用域 实例对象 ; 之后的 协程操作都要定义在该协程作用域中 ;...---- 通过委托方式 , 继承 CoroutineScope 接口 , public interface CoroutineScope { public val coroutineContext...import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import

    1.5K11

    【Kotlin 协程】协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 )

    文章目录 一、viewModelScope 作用域作用 二、viewModelScope 作用域示例 常见的 CoroutineScope 协程作用域 : GlobalScope : 该作用域是 进程级别的...生命周期函数中取消协程任务 ; viewModelScope : 该作用与仅在 ViewModel 中使用 , 与 ViewModel 生命周期绑定 ; lifecycleScope : 该作用与仅在...Activity 中使用 , 与 Activity 生命周期绑定 ; 一、viewModelScope 作用域作用 ---- viewModelScope 协程作用域 需要绑定 ViewModel 生命周期..., 在特定界面中 , 如可旋转屏幕的 Activity 界面中 , 如果使用 MainScope 协程作用域 , 当屏幕旋转时 , 就会在 onDestory 生命周期函数中 取消协程作用域 , 此时协程相关的临时数据都被取消了...-- 布局主要内容 --> 使用 " Alt + 回车 " 快捷键 , 弹出如下下拉菜单 ,

    1.2K20

    Android--Hilt入门

    、构造函数注入 和Dagger相同,Hilt也分两种注入方式,以上篇Dagger中的代码为例子,来对比两个框架的使用区别 1.gradle中配置依赖 工程gradle中导入插件: dependencies...ViewModelComponent是新出的子组件,对应的作用域为ViewModelScope,作用为:一个ViewModel中多个同类型注入对象,则使用同一份实例。...以前实现ViewModel中注入还需要依赖其他框架,这次来使用ViewModelScope作为例子 4.1 定义注入类,并使用@ViewModelScope注解 注意:如果把参数放入主构造,并且赋了默认值...,@Qualifier注解相当于为其取了个别名,在使用对象注入时也相应的使用@Qualifier注解,即可得到对应的注入对象 5.1 @Named解决注入冲突 @Named注解源码中,使用了@Qualifier...当我们有一个接口,并且有它的实现类,那么Hilt也可以注入生成该接口。

    1.8K20

    在 Android 开发中使用协程 | 上手指南

    本文是介绍 Android 协程系列中的第二部分,这篇文章主要会介绍如何使用协程来处理任务,并且能在任务开始执行后保持对它的追踪。...当将协程同 Android 架构组件 (Android Architecture Components) 集成起来时,您往往会需要在 ViewModel 中启动协程。...所以,当您需要将一个协程同 ViewModel 的生命周期保持一致时,使用 viewModelScope 来从常规函数切换到协程中。...当然,在真实的 Android 开发中最好别这么做,太浪费资源了。 这段代码中,我们在 coroutineScope 构造器中使用 launch 启动了一千个协程,您可以看到这一切是如何联系到一起的。...使用结构化并发 在这篇文章中,我介绍了结构化并发,并展示了如何让我们的代码配合 Android 中的 ViewModel 来避免出现任务泄漏。

    1.7K20

    android爬取英文单词发音,并在app中播放。(使用百度接口)

    前言 百度翻译的单词发音获取比较简单。不需要带什么签名、token,cookie等等,方便我们获取信息。...network分析 从百度翻译官网中可以发现,向https://fanyi.baidu.com/gettts可以获取MP3音频文件 http请求 请求URL:https://fanyi.baidu.com...第三个单词是获取单词读音的速度。3就是默认的,3就可以。 第四个单词默认就行,这个不用管。...举例:获取到单词发音后,用mediaPlayer播放 先上代码: private String search_text="petroleum"//petroleum替换成你想要查的单词发音 //获取百度翻译单词发音...mediaPlayer比较强大,原生就支持网络源播放音频,使用MediaPlayer.create(v.getContext(), Uri.parse(uk)).start();即可播放 再通过mediaPlayer.start

    1.1K20
    领券