如果不是通过SQLite,Android应该如何管理图像

如果不是通过SQLite,Android应该如何管理图像,android,android-sqlite,android-image,Android,Android Sqlite,Android Image,我在SQLite数据库中保存了一些实体。 其中一些实体也会有图像,据我所知,SQLite DB每个游标最多可以返回2MB,因此将图像存储在DB中不是一个选项。 所以我想我们只剩下内部存储和自我管理了。 是否有用于管理这些映像的支持库? 有推荐的设计吗? 我想用entityType_id.png的文件名方案保存图像,其中id是SQLite DB中的实体id,但我担心它可能会随着时间的推移而改变备份/恢复,因此可能另一种方案可能是更好的解决方案?我认为在SQLite中存储大小超过2M的图像不适合读取

我在SQLite数据库中保存了一些实体。 其中一些实体也会有图像,据我所知,SQLite DB每个游标最多可以返回2MB,因此将图像存储在DB中不是一个选项。 所以我想我们只剩下内部存储和自我管理了。 是否有用于管理这些映像的支持库? 有推荐的设计吗?
我想用entityType_id.png的文件名方案保存图像,其中id是SQLite DB中的实体id,但我担心它可能会随着时间的推移而改变备份/恢复,因此可能另一种方案可能是更好的解决方案?

我认为在SQLite中存储大小超过2M的图像不适合读取或删除,也许您可以在存储图像之前对其进行压缩

我使用了您在这里提到的解决方案:

我想用entityType_id.png的文件名方案保存图像,其中id是SQLite DB中的实体id,但我担心它可能会随着时间的推移而改变备份/恢复,因此可能另一个方案可能是更好的解决方案

我在Android项目中创建了一个文件夹,并使用了永远不会更改的ID。知道了从数据库中检索到的文件夹和id,我就能够获得图像。我用这个方法来解决这个问题


我在这个小应用程序中使用了这样的方法:。您可以在这里找到一个示例:

有一些序列来生成唯一的id,可能只是将当前值存储为属性,并且只将id存储在数据库中。按id命名图像文件,并将文件存储在文件系统中的某个位置。如果删除记录,请删除该文件,不要重复使用id


生成自己的ID,独立于数据库正在执行的操作。这样,它们就不会受到备份/恢复或类似操作的影响。

您应该将所有映像存储在内部存储器上。有一篇关于这一点的帖子,其中包含一段代码,可能会对您有所帮助:

编辑:
我的意思是外部存储范围而非内部

您如何管理sqlite之外的任何文件?@user2864740正如我所提到的,sqlite游标限制为2MB,而我希望存储大于2MB的文件。如前所述,您如何存储sqlite之外的任何文件?看起来不错。。我相信在将ID用于文件名方案之前,我必须确保ID不会改变,但看起来我走对了方向。压缩是可能的,当然代价是图像质量下降。无论如何,2MB是不够的。谢谢,注意你链接中的答案建议使用外部存储而不是内部存储,我个人不同意。对不起,这是一个输入错误。你能说明为什么人们更喜欢外部而不是内部吗?我认为更重要的是,由于限制,例如SQLite文件限制,将图像存储在应用程序本地数据库之外。另一件事是,将图像保存在外部存储器上是一种很好的做法。为什么要将图像存储在外部存储器中?如果有的话,你能解释一下这样做的好处吗?