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

Hel*_*oCW 3 java kotlin android-studio

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

似乎 const val 本质上是静态变量,有时代码 B会导致内存泄漏吗?

对于复变量,唯一的方法就是使用const val,就像Code C一样,对吗?

代码 A

<resources> 
    <integer name="NotificationID">2000</integer>
    <string name="NotificationChannelID">ID</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

代码 B

const val NotificationID=2000
const val NotificationChannelID="ID"
Run Code Online (Sandbox Code Playgroud)

代码 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
Run Code Online (Sandbox Code Playgroud)

Irc*_*ver 5

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

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

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