我一直在为Android开发基于内容的应用程序,并且我需要在手机上存储超过120 MB的数据。当用户第一次运行应用程序时,我从服务器上下载这些数据。我的第一个问题是,如果我使用Context.getDir()方法将此数据存储在应用程序的内存中,还是使用Environment.getExternalStorageDirectory()将其存储在SD卡上更好?将它存储在SD卡上的问题是,我必须以某种方式保护这些数据,否则它们将被所有其他应用程序或人员访问。我的第二个问题是否是okey将这些数据存储在应用程序的内部存储器中,然后它们在那里安全吗?将数据存储在内存中而不是在SD卡上?
回答
我的建议是在内存中。
大多数设备应该有内部存储和SD卡共享的相同存储分区。无论哪种方式,您都使用相同的存储空间。从用户的坚持,SD卡和内部存储没有什么不同,只是SD卡中的数据可以通过某些方式共享,而不是您想要的。
您必须研究如何保护您的数据,例如应将您的应用程序数据部署/下载到外部存储SD卡中。 导致许多现代智能手机依赖内部存储器作为RAM存储器来运行应用程序。
这就是为什么我认为你不应该安装你的applicatino数据在内部存储。 我学习了这个针对windows ce的开发,windows mobile类似于OS设备。
感谢,
我最终决定将它们存储在SD卡上并加密它们!日Thnx – bytebiscuit
对于首先问,为第二个问题
如果你打算文件保存到内存中,你只需要调用类似这样的方法:
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供您参考是在保存选项。
- 1. Android将文件保存到SD卡,而不是内部存储
- 2. 无法在SD卡上存储数据
- 3. 在Android中将数据存储在SD卡上
- 4. 存储在SD卡中的Android数据
- 5. 文件保存到内部存储,而不是SD卡
- 6. 使用SD卡inputStream(图像)android而不是内部存储器
- 7. 如何发送图像而不存储在SD卡中?
- 8. 我可以上传我的apk到SD卡而不是内部存储器吗?
- 9. 将对象保存在MemCache中而不是数据存储区
- 10. 在SD卡上存储android应用程序数据
- 11. 将增加的矩阵存储到HDD中,而不是存储在内存中
- 12. 写入文件到SD卡而不是USB存储
- 13. 在android中存储数据文本到SD卡?
- 14. 将数据存储在服务器上的文件而不是数据库中?
- 15. 将文件存储在Android的SD卡上
- 16. 将文件存储在可移动的SD卡上
- 17. 有没有办法检测apk是否存储在SD卡上?
- 18. 在具有内置存储和外部SD卡的电话中存储图像
- 19. 无法读取存储在SD卡
- 20. 获取存储在SD卡+安卓
- 21. html5 SD卡上的本地存储
- 22. 将图像存储到SD卡?
- 23. 从SD卡中获取图像并将其存储在Android数据库中
- 24. Atrix外部存储功能返回内部SD卡和不可移动SD卡
- 25. 如何从SD卡获取歌曲并将歌曲存储在数据库中
- 26. 知道SD卡上的位图大小,然后将其保存在SD卡上
- 27. 图像保存在手机存储而不是SD卡,也不显示在手机图库为什么?
- 28. 一些Android设备将内部存储视为SD卡和外部存储EXTSD
- 29. 在SD卡中存储文件的确切路径是什么
- 30. 除了在SD卡上存在的任何数据存储在树莓派上吗?
我不同意你声称“大多数”设备具有与内部和外部共享的相同存储分区。对大多数设备来说,这是毫无根据的。最好假设内部存储是有限的,外部存储(相对)不是这样的..一个应用程序,在我的手机上消耗120mb的内部存储空间(756mb内部存储空间可用于应用程序)将很快在我全新的顶部这种在线设备。 – Pedantic
我明白你的关心。 –
我明白你的关注。我假设这是因为我的Android 3.2的表似乎是这样配置的。因此,我认为这将是一个趋势。 –