gpt4 book ai didi

android - Kotlin Android 扩展与 Android 数据绑定(bind)库,内存使用情况

转载 作者:行者123 更新时间:2023-12-02 18:55:06 25 4
gpt4 key购买 nike

我对这两种情况下使用的内存有疑问 ->Android 数据绑定(bind)与 Android Kotlin 扩展。在什么情况下设备上使用的内存会更少?

Kotlin Android 扩展首先调用 findViewById,之后结果将存储在本地缓存中。这意味着已使用的内存。

DataBinding通过创建的绑定(bind)类在布局和 Activity/fragment 之间创建一条路径。

当我们考虑用户设备上的内存使用情况时,我关心的是使用更高效的方法。谁能帮我找出答案吗?我倾向于说数据绑定(bind)更有效。 Here是一个类似的问题,但不属于效率方向。

谢谢!

最佳答案

tldr:据我所知,内存使用情况没有任何区别,除非您不使用布局的所有 View 。两者都缓存 View ,但是 andoid kotlin 在数据绑定(bind)初始化所有 View 时按需获取。根据性能,kotlin 扩展在 fragment/Activity 创建期间比数据绑定(bind)稍微快一些(我想说在大多数情况下无法识别)。

Kotlin Android 扩展文档:

Adds a hidden caching function and a field inside each Kotlin Activity. The method is pretty small so it doesn't increase the size of APK much. Replaces each synthetic property call with a function call.

How this works is that when invoking a synthetic property, where the receiver is a Kotlin Activity/Fragment class that is in module sources, the caching function is invoked. For instance, given

class MyActivity : Activity() fun MyActivity.a() { 
this.textView.setText(“”)
}

a hidden caching function is generated inside MyActivity, so we can use the caching mechanism.

However in the following case:

fun Activity.b() { 
this.textView.setText(“”)
}

We wouldn't know if this function would be invoked on only Activities from our sources or on plain Java Activities also. As such, we don’t use caching there, even if MyActivity instance from the previous example is the receiver.

原因:Kotlin 使用合成属性,并且使用缓存功能按需调用这些属性(因此 Activity/Fragment 加载速度稍快),而数据绑定(bind)一次绑定(bind)所有 View (这会消耗更多时间)。

关于android - Kotlin Android 扩展与 Android 数据绑定(bind)库,内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54213197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com