gpt4 book ai didi

java - 使用 Android Studio 3.5 的 Kotlin 中的资源文件和 const val 之间哪种方式更好?

转载 作者:行者123 更新时间:2023-11-30 07:40:22 24 4
gpt4 key购买 nike

我知道我可以在资源文件或 const val 中定义一些简单类型常量(例如 String、Integr、Bool 等),例如 代码 A代码 B,你能告诉我哪种方式更好吗?

看来const val本质上是静态变量,有时候代码B会不会导致内存泄露?

对于复杂的变量,唯一的办法就是使用 const val,就像代码 C 一样,对吧?

代码A

<resources> 
<integer name="NotificationID">2000</integer>
<string name="NotificationChannelID">ID</string>
</resources>

代码 B

const val NotificationID=2000
const val NotificationChannelID="ID"

代码 C

const val FLAGS_FULLSCREEN =
View.SYSTEM_UI_FLAG_LOW_PROFILE or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION


const val ANIMATION_FAST_MILLIS = 50L
const val ANIMATION_SLOW_MILLIS = 100L

最佳答案

我想说将常量放入资源的唯一原因是需要为不同的设备配置设置不同的值。例如,不同设备区域设置的不同字符串、不同设备分辨率的不同文本大小或边距。

如果它是“真正不变的”,我认为没有必要将它放在资源中。因为这意味着额外的问题,比如只能通过上下文获取值(value)(尽管应用程序上下文是适用的)。正如评论中提到的 Think Twice Code Once 它可能会导致测试模块出现一些问题。

既然你问的是内存泄漏,我认为你没有正确理解它。持有 Stringint 和其他简单常量不会引发任何泄漏,因为它们不能持有任何应该被清除的对象。但是,如果您持有静态 Activity,例如,它会导致很大的泄漏,因为在它完成后它无法从内存中清除,因为在该静态变量中有引用。

关于java - 使用 Android Studio 3.5 的 Kotlin 中的资源文件和 const val 之间哪种方式更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847020/

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