将数据存储在内存中,而不是存储在SD卡上?

时间:2011-10-03 13:47:04

标签: android

我一直在为Android开发基于内容的应用程序,我需要在手机上存储超过120 MB的数据。当用户第一次运行应用程序时,我从服务器下载此数据。我的第一个问题是,如果我使用Context.getDir()方法将此数据存储在应用程序的内部存储器中,或者使用Environment.getExternalStorageDirectory将其存储在SD卡上更好吗? )。将其存储在SD卡上的问题是我必须以某种方式保护这些数据,否则每个其他应用程序或个人都可以访问它们。我的第二个问题是,如果能够将大量数据存储在应用程序的内部存储器中,那么它们是否安全?

3 个答案:

答案 0 :(得分:2)

第一个问题第二个问题


如果您打算将文件保存到内部存储器,您只需要调用这样的方法:

FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);

如果您设置了Context.MODE_PRIVATE,则其他应用甚至您和用户都无法看到它。当然,此MODE_PRIVATE仅对没有root访问权限的手机有用。无论你是否设置了PRIVATE MODE,那些已经生根的手机都可以访问内部存储器中的任何文件夹。

因此,如果您决定将文件保存在内部存储器中,尽管存在大小,如果您认为这些文件应该保密,则需要使用某种加密方式。

对于尺寸,120MB对于保存在内部存储器上的数据文件来说有点过大。与Nexus One相同时代的手机通常拥有512MB内存,因此从用户的角度来看,他们不喜欢超大应用程序占用内部内存,因为内存不足有时会导致Android操作系统停止接收短信和停止同步。

总而言之,由于几乎所有Android手机都具有root访问权限,因此将应用私有数据直接保存到外部或内部内存是不安全的。至于你的120MB数据大小,我建议你做一个简单的加密并保存到SD卡。

这是一个很棒的explanation on two storage types on saving files

以下是Android Developers的保存选项供您参考。

答案 1 :(得分:1)

您必须研究如何保护您的数据,以便将您的应用程序数据部署/下载到外部存储SD卡中作为示例。 因为许多现代智能手机都依赖于ram内存中的内部存储来运行应用程序。

这就是为什么我认为您不应该在内部存储中安装applicatino数据。 我学习了这个开发用于windows ce,windows mobile类似的OS设备。

谢谢,

答案 2 :(得分:0)

我的建议是在内存中。

大多数设备应该在内部存储和SD卡之间共享相同的存储分区。无论哪种方式,您都会消耗相同的存储空间。从用户的perspactive,SD卡和内部存储之间没有什么不同,只是SD卡中的数据可以通过某种方式共享,这不是你想要的。