kotlin 什么是在Android的房间数据库中存储图像的最佳做法?[复制]

wwwo4jvm  于 2022-12-30  发布在  Kotlin
关注(0)|答案(1)|浏览(119)
    • 此问题在此处已有答案**:

How insert image in room persistence library?(3个答案)
17小时前关门了。
我从活动结果中得到了图像内容URI,如下所示

val imagePickerLauncher = rememberLauncherForActivityResult(contract = ActivityResultContracts.GetContent(), onResult = { uri->
    it?.let {
        profilePhoto = uri.toString()
    }
})

1.我应该把它转换成字节数组并存储为blob吗?
1.我应该复制文件到应用程序特定的文件夹和存储路径到房间?
最好的解决方案来做到这一点

njthzxwz

njthzxwz1#

由于Android API如何通过光标检索数据,选项1可能可行,也可能不可行。

  • 游标是一个缓冲区,用于检索一些可用的行。
  • 游标必须能够容纳/保持至少1行,它不能容纳/保持行的一部分。
  • 它的大小限制为最多4 MB。
  • 如果图像大于4 MB,则无法直接提取,必须将其拆分为多个部分。例如,如何在Android SQLite中使用大于CursorWindow限制的图像?

选项1将再次取决于大小,可能(大概)对缓冲的利用不佳,并且效率低,因此是资源密集的。
因此,选项2被视为推荐方法,即使在某些情况下,SQLite可以更高效/更快速地按照SQLite 35% faster than the Filesystem存储数据

相关问题