Android - 存储下载内容的位置,内部存储与外部存储?

时间:2011-09-09 17:58:57

标签: android storage android-sdcard

关于在我的应用程序中存储下载内容的位置的许多单独但相关的问题。

我有一个从中央服务器下载内容的应用程序。此内容有时是高级内容,或者至少是发布者不希望其自由分发的内容。据我所知,“外部”存储很容易访问,而“内部”存储受到保护,除非电话已植根。

如果应用程序安装在SDCARD上(因为我的配置是),那么SDCARD上的“内部”存储也是物理上的吗?因此,如果我的SDCARD安装的应用程序向内部存储下载了100MB的内容,那么它实际上是在SDCARD上结束了,还是最终在设备的物理板载存储中?

如果应用程序安装在SDCARD上,并且带有下载内容的“内部”存储器位于SDCARD上,那么它是以开放格式物理存储还是加密?我似乎记得读过存储在SDCARD上的应用程序是加密的。这是否也适用于“内部”存储?

(删除关于将文件存储在单个目录中的问题,因为Context.getDir()意味着可以在内部存储中创建和维护目录系统)

有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

在摩托罗拉Droid 2上用Android 2.2进行了大量实验并得出以下结论:

  • 当应用程序安装/移动到SDCARD时,它将作为.asec文件存储在SDCARD上隐藏的/.android_secure目录中。这是一个加密和压缩的文件。
  • 当应用程序在“内部存储”中创建数据文件时,它们存储在设备的内部存储器中,SDCARD上的
  • 应用程序的“设置/管理应用程序详细信息”对话框具有“数据”的值 - 这是应用程序在其内部存储中使用的数据量,即内部存储器中不在SDCARD上的数据
  • 外部存储最终会在/ Android / data目录下的SDACRD上结束
  • 清除“设置/管理应用程序详细信息”对话框中的数据确实会清除所有内容,这意味着已安装的应用程序需要具备足够的知识/逻辑来处理“无数据”情况。

我的应用是一款下载内容应用。这一切对我来说意味着:

  • 将我的小应用程序存储在SDCARD上几乎没有什么实际价值,因为它将在手机上消耗的大部分存储将位于设备的内部存储器中。当然,除了允许应用程序安装在SDCARD上总是好的。
  • 如果用户擦除了安装包,则需要能够恢复用户下载的内容。
  • 在内部存储器中存储unique installation id的概念很有效,直到用户删除应用程序的数据,从而导致计算新的安装ID。因此,为了能够记住已下载到设备的内容,需要用户在中央服务器上创建用户帐户,并在应用程序从头开始时登录。