2011-10-03 148 views
0

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

回答

0

我的建议是在内存中。

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

+1

我不同意你声称“大多数”设备具有与内部和外部共享的相同存储分区。对大多数设备来说,这是毫无根据的。最好假设内部存储是有限的,外部存储(相对)不是这样的..一个应用程序,在我的手机上消耗120mb的内部存储空间(756mb内部存储空间可用于应用程序)将很快在我全新的顶部这种在线设备。 – Pedantic

+0

我明白你的关心。 –

+0

我明白你的关注。我假设这是因为我的Android 3.2的表似乎是这样配置的。因此,我认为这将是一个趋势。 –

1

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

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

感谢,

+1

我最终决定将它们存储在SD卡上并加密它们!日Thnx – bytebiscuit

2

对于首先问,为第二个问题


如果你打算文件保存到内存中,你只需要调用类似这样的方法:

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

如果您设置了Context.MODE_PRIVATE,则其他应用程序甚至您和用户都无法看到它。当然,这个MODE_PRIVATE仅适用于没有root权限的手机。无论您是否设置了私密模式,那些拥有扎根的手机都可以访问内部存储器中的任何文件夹。

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

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

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

这里有一个很好的explanation on two storage types on saving files

这里从Android Developers供您参考是在保存选项。

相关问题