我应该在哪里存储图片

时间:2019-10-06 08:55:32

标签: java android sqlite

我已经开始制作android问答游戏,所以我有500张要提问的图像,但是我不知道应该在哪里存储它,我在互联网上观看了一些视频,他们将其图像存储在Drawable-Floder中并使用一些代码来使图片在活动中显示,但是在这些视频中他们有一些图片。我的问题是“最好在可绘制的花絮中存储500张图像,否则我应该使用数据库(我对数据库了解不多,所以我不知道如何存储图像以及如何显示从数据库到活动的图像)< / p>

2 个答案:

答案 0 :(得分:0)

首先,将图像存储在数据库上完全是错误的,这会使您的应用变慢。
您可以将图像保存在class A: def __init__(self): print("A constructor") super().__init__() # We need to explicitly call super's __init__ method. Otherwise, None will be returned and the execution will be stopped here. class B: def __init__(self): print("B constructor") class C(A, B): def __init__(self): print("C constructor") super().__init__() # This will call class A's __init__ method. Try: print(C.mro()) to know why it will call A's __init__ method and not B's. c = C() 文件夹中,但这会使应用程序在商店中的体积变大。
因此,我建议构建一个drawable,以便您可以从Internet下载它们并将其存储在内部存储器中。

答案 1 :(得分:0)

最重要的方面之一是图像尺寸。如果图像很小,比如说大约100k,那么按照35% Faster Than The Filesystem,将它们存储在数据库中会很有效。

如果它们较大,则将它们存储在数据库中的效率将逐渐降低。大约2Mb,而没有代码将它们分割(增加效率低下)成可管理的块,然后当使用SDK时它们就无法在Android中使用,因为由于Cursor Window限制为2Mb而无法检索它们。

因此,如果500张图像每张大约100k,那么大约可存储25Mb的数据,并且可能非常有效,尽管每个Cursor Window只有9行,将其稍微推开了一点。

在500k时为125Mb,将超过100Mb的Playstore限制。这将需要APK扩展文件(请参阅下面的链接),将它们存储在数据库中可能效率很低(每个“游标窗口”可能有3行)。

然后,您将要从资产或原始文件夹或另一个文件夹中检索图像,并将路径或路径的一部分存储在数据库中,如果所有图像都在同一位置,而只是图像名称不同,那么存储图像名称可能就足够了,例如每个图像25个字符(字节),在15k左右的数据库方面根本就不多。 APK Expansion Files

您不妨看一下How can I insert image in a sqlite database,其中包括演示代码,该示例代码将100k或更少的图像保存在数据库中,而超过100k的演示代码则保存了路径。