运行 关于 SD 卡问题

running on an SD card issue

我最近通过指定将我所有的应用修改为 SD 卡上的 运行 android:installLocation="preferExternal" 在 Manifest.xml。他们在我所有的测试手机上测试都很好。

似乎很容易让应用程序允许这样做。但我注意到我手机上的大多数应用程序都不允许在 SD 卡上进行 运行ning。 Google Chrome、Google Earth、Dropbox、Google Gmail、GolfNow 等。事实上,Google 应用中的 none 将 运行 在 SD 卡上。

我正在尝试找出原因。 运行ning 在 SD 卡上的缺点是什么? 谢谢, 院长

What is the downside of running on an SD card

取决于应用程序。例如,如果您的应用程序收听广播、使用警报管理器等,那么它必须不在 SD 卡上才能正常工作。如果您的应用没有使用这些中的任何一个,那么从开发人员的角度来看,这根本没有区别。

这实际上是一个广泛的问题,您真的必须询问这些应用程序的开发人员才能获得明确的答案。

一些想法...

  • 传统上已知的外部存储通常是通过插入 SD 卡提供的。当然,用户可以卸载 SD 卡 and/or,这意味着安装在其上的 none 应用程序可以正常工作,直到重新插入。
  • 某些类型的 RAM 芯片的访问时间比其他类型快得多。设备上的内部 RAM 可能比访问 SD 卡更适合处理器/计算密集型应用程序,SD 卡在 RAM 芯片级别和由于必须通过外部总线而访问时间往往较慢。
  • 关键任务应用程序(取决于用户对它们应该是什么的定义)需要永久可访问(见我的第一点)。如果用户希望以固定的短时间间隔检索他们的电子邮件,则不能允许他们的电子邮件应用程序消失,因为外部存储已被卸载/删除。
  • 某些应用要求存在已知问题,当应用安装在 SD 卡上时会导致不可预知的结果。一个典型的例子是注册 BroadcastReceiver 以接收 BOOT_COMPLETED 操作的任何应用程序。引导完成发生在 BEFORE 设备的各个部分都已启动并且 运行 - 这包括安装 SD 卡。在这种情况下,广播已发送,但 SD 卡上的应用程序未 运行 且无法接收。
  • 随着时间的推移,所谓的 'internal' 和 'external' 存储定义变得越来越模糊 - 与几年前相比,许多 Android 设备拥有大量 'internal' 内存使得通过安装或移动应用程序到 'external' 存储来释放 space 变得不那么重要。有些设备甚至无法添加外部 SD 卡,并且 'external' 存储是从 'internal' 存储上的分区模拟的。
  • 还有一点(开玩笑)- 也许您提到的应用程序的开发人员是自大狂,他们只是坚持用尽宝贵的 'internal' 存储空间,因为他们可以。 ;)