1

问题是如何存储大量数据(数百Mb和更多)并同时保持它仅适用于我的应用程序?如何在Android中私密存储大数据量?

我发现的内部存储空间有限,其大小取决于设备型号。对于大数据量存储来说足够了吗?我可以在内部存储器中存储500Mb和更多内存吗?

另一种方法是使用外部存储。据我所知,外部存储不限制应用程序,它可以使用整个外部存储。但是,数据可用于用户和其他应用程序,在我的情况下是不可接受的。有没有办法让数据存储在外部存储中,就像存储在内部数据一样?

回答

1

内部存储作为我发现是有限的,它的大小仅依赖于在Android的1.x/2.x的设备模型

。在大多数Android 3.0+设备的广阔的上,内部和外部存储位于相同的分区上,因此具有相同的空间量。

我可以在内部存储中存储500Mb或更多吗?

在Android 3.0+上,可能。用户可能没有500MB的免费空间,但这不是内部存储的限制,而是一般的“存储”限制。

有没有办法让数据存储在外部存储中,私有就好像存储在内部数据一样?

不是。例如,您不能阻止用户或其他应用程序删除这些文件。您可以使用Facebook的隐藏库来加密外部存储上的文件,并将生成的加密密钥存储在内部存储中,以防止用户或其他应用更改文件内容(除了简单地破坏它们)。但是,如果您仍然支持Android 1.x/2.x,这只会相关。在Android 3.0+上,只需使用内部存储。

0

考虑到你受到两种可能的方法的限制。

  • 使用内部存储,但一定要保持检查空闲内存,并且每当设备无法处理它是让用户知道他们的设备无法运行您的应用程序的问题。
  • 使用外部存储器并在其上构建一个很好的加密,所以即使其他人获取这些文件,如果没有正确的解密机制,其上的实际数据也将毫无意义。

哪个选项是产品决策。

0

您可以使用getExternalFilesDir()限制媒体商店内容提供商从外部存储中读取您的应用程序特定文件。但我认为任何其他具有READ_EXTERNAL_STORAGE权限的应用程序都可以访问这些文件。唯一的方法是使用内部存储器。

我不知道你想存储什么类型的文件。如果文件数量较少,可以考虑使用数据库,但这会违反ACID原则。或者,您可以考虑使用内容提供商进行限制。