原文地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity

从API8開始,你能够将你的应用安装在外部储存。这是一个可选的特征,你能够在你的应用的manifest中声明:android:installLocation属性。假设你不声明这个属性,你的应用程序将会被安装在内部储存,而且不能被移到外置储存。

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:installLocation="preferExternal"
  3.     ... >

当你声明了preferExternal,你要求你的应用程序安装在外置储存,可是系统不确定你的程序一定安装在外置储存。若外置储存已经满了,将会储存在内置储存。用户也能够在两个储存之间移动你的应用程序。若你声明了auto,你表明你的应用程序能够安装在外置储存,可是你没有一个安装位置的偏好。系统会依据一些因素来决定你的应用程序安装在哪。用户也能够在两个储存之间移动你的程序。

当你的应用被安装在外置储存:

1.当你的外置储存挂载在你的设备上时,对你的应用操作没有影响。

2..apk文件会储存在外置储存,可是全部私有的用户数据,数据库,优化的.dex文件,和提取的本地的代码都会保存在内置储存。

3.你的应用被安装的容器使用一个随机生成的key加密,并且仅仅能被安装了这个应用的这个设备解密,这样保证一个sdcard上仅仅有一款同样的应用。

4.用户能够通过系统设置将你的应用移到内置储存。

注意:当用户使用usb储存和电脑共享文件或通过系统设置卸载SD Card,在外置储存中执行的应用会马上被杀死。

向前兼容

在API8之前安装的应用会被安装在内置储存,而且不会被移动到外置储存。

可是你的应用能够通过设置来支持低于API8:、

1.在<manifest>中设置android:instaillLocation为auto或perferExternal.

2.不用改动minSDKVersion,而且保证你的应用代码是兼容的

3.为了编译你的应用程序,将你的build target改为API8,由于低的android库不认识instaillLocation属性,并且不会编译你的应用程序。

那些不用安装在外置储存的应用

用户使用usb储存和电脑共享文件或通过系统设置卸载SD Card,在外置储存中执行的应用会马上被杀死。

为了使你的应用能按预期的运行,假设你使用了一下的特征你不能将你的应用安装在外置储存。

1.服务:你执行的服务将会被杀死,并且当外置储存被挂载时也不会重新启动。可是你能够注冊一个 ACTION_EXTERNAL_APPLICATIONS_AVAILABLE的广播intent,这样当你外置应用变得可用的时候会被提醒。

2.警报服务:你用AlarmManager注冊的服务将被取消,你必须在外置储存被又一次挂载的时候又一次注冊。

3.输入方法引擎:你的IME将会被默认IME代替。

4.动态壁纸:你执行着的壁纸将会被默认的动态壁纸代替。

5.App widget:你的Appwidget会被从桌面移除。

6.账户管理:使用AccountManager创建的账户会消失。

7.同步Adapter:你的AbstractThreadedSyncAdapter 
以及它的一切同步方法将不会工作。

8."boot
completed"这个广播的接受者:系统会在外置储存器被挂载之间发出ACTION_BOOT_COMPLETED 的广播,你安装在外置储存的应用不会受到这个广播。

那些须要安装在外置储存的应用

出去以上列表的,其它的应用都能够安装在外置储存,大游戏通常安装在外置储存中,由于游戏在它不活跃的时候不须要提供额外的服务,当外置储存不可用,游戏将会被杀掉,当外置储存变得可用并且用户重新启动游戏,不应该有可见的影响(如果游戏在它正常的Activity生命周期适当的保存了状态)

当你的应用须要兆字节的apk文件时,你应该细致考虑时候应该将应用安装在外置储存,来使用户保存内置储存空间。

android数据储存之应用安装位置的更多相关文章

  1. (转)Android如何编程设置APP安装位置(外部存储或内部存储)?

    Beginning with API Level 8, you can allow your application to be installed on the external storage ( ...

  2. android数据储存之存储方式

    能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...

  3. Android数据储存之SharedPreferences总结

    写在前面:本文是我参考李刚老师的<疯狂Android讲义>以及API所写的读书笔记,在此表示感谢,本人小白,如有错误敬请指教. SharedPreferences的使用背景: 有时候,应用 ...

  4. Android数据储存之SQLiteDatabase 简单增删改查

    SQLiteDatabase 使用 SQLiteDatabase提供如下方法来打开一个文件对应的数据库: openDatabase(String path, SQLiteDatabase.Cursor ...

  5. Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用

    SQLiteOpenHelper 简介: SQLiteOpenHelper是一个借口!所以不能直接实例化!那我们想要得到SQLiteOpenHelper对象就需要实现该接口!创建该接口的实现类对象! ...

  6. Android数据储存之SharedPreferences

    Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...

  7. Android数据储存之File

    openFileOutStream 和 openFileInStream FileInputStream fileInputStream = openFileInput(name);  打开应用下文件 ...

  8. Android应用程序的安装位置

    Android应用程序的默认安装位置以及是否可移动取决于开发者在其AndroidManifest.xml中的设置:   <manifestxmlns:android="http://s ...

  9. androidd 程序默认安装位置和数据存储位置(公用和私用)

    默认安装位置: android App 安装到外置SD卡中,缓解手机内置内存的压力: <manifest xmlns:android="http://schemas.android.c ...

随机推荐

  1. CF 518D(概率dp)

    传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...

  2. POJ 2365 Rope(水题)

    [题意简述]:给出我们钉子个数与半径,让我们求出缠绕在钉子上的绳子有多长. [分析]:从题目中我们能够看出,绳子长度的和等于每两个钉子的距离的和加上接触在钉子上的绳子的长度,不难发现这部分长度事实上就 ...

  3. bzoj 3519: [Zjoi2014] 消棋子 题解

    [序言]在大家怀疑的眼光下,我做了一个中午和半个下午.调了一个晚上的题目总算A了! [原题] 消棋子是一个有趣的游戏.游戏在一个r * c的棋盘上进行.棋盘的每一个格 子.要么是空,要么是一种颜色的棋 ...

  4. Application.mk中APP_ABI 的含义

    我们在编写JNI代码时有一个可选的文件Application.mk ,这个文件你可以不创建,但是有时候是有必要写一个这样的文件的. Application.mk文件用于描述应用程序本身的一些属性信息, ...

  5. 【转】Acm之java速成

    这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入:格式为:Scanner cin = new Sca ...

  6. 50个最受网友欢迎的HTML5资源下载列表

    完整附件下载地址:http://down.51cto.com/data/413867 附件预览: HTML 5游戏源码精选(共含9个游戏源码) http://down.51cto.com/zt/227 ...

  7. thinkphp框架的相关总结

    参考链接地址:http://gongwen.sinaapp.com/article-205.html 1. 模板中不能使用的标签 {$content} {$i} 2. If标签 如: <if c ...

  8. windows phone 7 客户端和web的交互(WebBrowser的使用)

    原文:windows phone 7 客户端和web的交互(WebBrowser的使用) 前几天看到淘宝的Android客户端,有种促销的功能,当点击促销的时候连接的淘宝促销wap页面,然后点击商品后 ...

  9. margin 还能够被缩回

    <p><strong>话:</strong>的肥沃和收获而被估价的.才干也是土地,只是它生产的不是粮食,而是真理.假设仅仅能滋生瞑想和幻想的话,即使再大的才干也仅仅 ...

  10. 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思

    (本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...