将应用程序移动到Android中的SD卡时会发生什么

时间:2015-07-17 07:49:41

标签: android security

我想知道,

  1. 将应用从内部存储移动到SD卡时,应用数据/数据库文件/等会发生什么变化,反之亦然?
  2. 我还有一个安装在外部存储中的应用程序。我正在升级应用程序。该应用程序的最新版本具有标志,仅限于在内部存储中安装。

    1. 这个最新的应用程序是否会安装在内部存储中?系统会自动将应用程序数据从外部移动到内部还是先前安装的数据丢失?

1 个答案:

答案 0 :(得分:2)

实际上,这似乎不是一个程序性问题,而是一个Android OS问题。

首先。作为开发者,您不要选择 HOW 安装您的应用,但是从Android 2.2开始,您可以选择 WHERE

  

在API级别8之前构建的现有应用程序将始终安装在内部存储上,无法移动到外部存储

因为android API 8:

  

机器人:的installLocation
   internalOnly:仅在内部存储上安装应用程序。如果设备在内部存储器上运行不足,则会导致存储错误。

     

preferExternal: Android系统尝试在外部存储上安装应用程序。如果已满,则应用程序将安装在内部存储中。

     

auto:让Android系统决定应用程序的最佳安装位置。默认系统策略是首先在内部存储上安装应用程序。如果系统的存储空间不足,则应用程序将安装在外部存储上。

只要您以编程方式定义安装/移动过程,Android操作系统就会负责从内部移动到外部(如果可能),反之亦然。但作为程序员,您必须小心使用您正在开发的应用程序类型,以了解should or not allow this option

  

警告:当用户启用USB海量存储与计算机共享文件或通过系统设置卸载SD卡时,将从设备卸载外部存储,并在外部运行所有应用程序存储立即被杀死。

会发生什么: 只要您不做决定,我们就会以简单的方式解释。 应用程序的所有文件都移动到SD卡,除了内部存储中的一个小指针,告诉系统应用程序所在的位置。 (想象一下,如果你手动格式化你的SD卡,那么你的手机就不会知道应用程序已经消失了)但是如果你卸下它,手机就会让你访问。

第二次默认情况下,应用程序更新会尝试保留其安装位置,但应用程序开发人员可能会更新更新中的installLocation字段。在旧设备上使用此新属性安装应用程序不会破坏兼容性,这些应用程序将仅安装在内部存储上。这意味着,只要应用程序保持相同的标识符(以及市场应用程序的签名),旧数据就会被移动。

Source / Source

ADVANTAGES / DISAVANTAGES

要在升级应用时保留/更新数据库文件/配置,请选中herehere