Android 在SD卡问题上运行

Android 在SD卡问题上运行,android,sd-card,android-sdcard,Android,Sd Card,Android Sdcard,我最近修改了我的所有应用程序,通过指定 Manifest.xml中的android:installLocation=“preferExternal”。他们在我所有的测试手机上都测试得很好 对于一个应用程序来说,允许这样做似乎是不需要动脑筋的。但我注意到,我手机上的大多数应用程序都不允许在SD卡上运行。谷歌Chrome、谷歌地球、Dropbox、谷歌Gmail、GolfNow等等。事实上,谷歌的所有应用程序都不会在SD卡上运行 我想知道原因。在SD卡上运行的缺点是什么? 谢谢 院长 在SD卡上运行

我最近修改了我的所有应用程序,通过指定 Manifest.xml中的android:installLocation=“preferExternal”。他们在我所有的测试手机上都测试得很好

对于一个应用程序来说,允许这样做似乎是不需要动脑筋的。但我注意到,我手机上的大多数应用程序都不允许在SD卡上运行。谷歌Chrome、谷歌地球、Dropbox、谷歌Gmail、GolfNow等等。事实上,谷歌的所有应用程序都不会在SD卡上运行

我想知道原因。在SD卡上运行的缺点是什么? 谢谢 院长

在SD卡上运行的缺点是什么


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

这实际上是一个广泛的问题,你真的需要询问这些应用程序的开发人员以获得明确的答案

一些想法

  • 传统上,外部存储通常由插入式SD卡提供。当然,SD卡可以由用户卸载和/或物理移除,这意味着在重新插入SD卡之前,SD卡上安装的所有应用程序都无法工作
  • 某些类型的RAM芯片的访问时间比其他类型快得多。与访问SD卡相比,设备上的内部RAM可能更适合处理器/计算密集型应用程序,SD卡在RAM芯片级和外部总线上的访问速度都较慢
  • 关键任务应用程序(取决于用户对它们应该是什么的定义)需要永久访问(参见我的第一点)。如果用户希望以固定的短时间间隔检索其电子邮件,则不能允许其电子邮件应用程序消失,因为外部存储已卸载/删除
  • 某些应用程序需求存在已知问题,当应用程序安装在SD卡上时,这些问题会导致不可预测的结果。一个典型的例子是任何注册
    BroadcastReceiver
    以接收
    BOOT\u COMPLETED
    操作的应用程序。引导完成发生在设备的各个部分启动和运行之前,这包括安装SD卡。在这种情况下,广播被发送,但SD卡上的应用程序未运行且无法接收广播
  • 随着时间的推移,所谓的“内部”和“外部”存储定义变得越来越模糊——与几年前相比,许多Android设备拥有大量的“内部”内存,因此通过安装应用程序或将应用程序移动到“外部”存储来释放空间变得不那么重要。有些设备甚至无法添加外部SD卡,“外部”存储是从“内部”存储上的分区模拟的
  • 还有一点(开玩笑的)——也许你提到的应用程序的开发人员是利己主义者,只是因为他们可以,就坚持使用宝贵的“内部”存储空间
实际上,很少有设备将其“外部存储”作为可移动SD卡来实现。当然也有例外,但几年来,大多数人都是使用与内部系统相同的闪存块来模拟它的。但是几乎没有人使用“RAM芯片”来存储。@ChrisStratton:正如我在我的一个观点中提到的,出于传统原因,最近的设备模拟所谓的外部存储。还有一些“旧”设备,我认为它们仍然支持。我每天使用的老化的HTC Desire(原始型号)已经使用了5年,仍然运行Froyo,只有一个SD卡作为外部存储选项。很抱歉我使用了古老的术语“RAM芯片”——我从小就在玩电子产品(1985年获得了电子工程师的资格),我仍然根据它们的功能来概括术语。“RAM”历史上不适用于今天由flash担任的角色,也不适用于问题中讨论的角色-问题涉及到早期由磁盘或磁带担任的角色。Squonk,谢谢。很好的总结。我所有的应用程序都使用谷歌云信息,我通过广播接收器接收这些信息,它在SD卡上工作得非常好。