从 Kotlin 引用 SD 卡

问题描述 投票:0回答:1

我正在使用 Android Studio 在 Jetpack Composable 平台上编写一个 Android 应用程序。我需要在平板电脑中安装的 SD 卡上读取和写入文件。我可以如下定义卡的路径:

private val externalStorageVolumes = context.let { ContextCompat.getExternalFilesDirs(it.applicationContext, null) }

private val sdCardStorage = externalStorageVolumes[1]

问题是:我想从视图的 ViewModel 访问该卡,但正如您所看到的,我需要传递对上下文的引用。显然,不应从 ViewModel 引用任何上下文,因为这可能导致内存泄漏。

有什么方法可以从不需要上下文的 ViewModel 读取和写入 SD 卡吗?谢谢!

android kotlin viewmodel
1个回答
0
投票

显然不应从 ViewModel 引用任何上下文,因为这可能导致内存泄漏

这就是

AndroidViewModel
的用途。它介导对
Application
的访问,这是一个可以从
Context
安全使用的单例
ViewModel

更好的是让您的数据存储逻辑由单例存储库类管理,作为分层架构的一部分。您可以让存储库通过依赖反转(Dagger/Hilt、Koin 等)访问

Application
单例。

© www.soinside.com 2019 - 2024. All rights reserved.