android关于installLocation
以下内容主要参考自官网的描述。
从Android API-8开始,android允许你将应用程序安装到外部存储空间中去(比方:SD卡),你可以在AndroidManifest.xml中添加android:installLocation属性来声明应用安装的位置。如果你没有声明android:installLocation属性,那么你的应用默认只会被安装到内部存储空间中且不能移动到SD卡中。为了让系统能够将你的应用程序安装到外部存储中,你可以在AndroidManifest.xml文件中设置installLocation的值为auto或者preferExternal.
如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="preferExternal"
... >
。
如果你将installLocation的属性声明为preferExternal,那么你的应用将被要求安装在外部存储空间中。即使是这样系统仍然不保证你的应用一定会被安装到外部存储空间,如果你的外部存储空间已经满了,系统仍然可能将你的应用程序安装到内部存储空间中。用户仍然可以将应用程序在内部存储空间与外部存储空间进行移动. 如果你将installLocation的属性声明为auto,你的应用程序可能会被安装在外存储空间中,但是你没有特指安装的位置,由系统根据一些因素去决定你的应用程序安装位置,当然用户也可以将应用程序在内部存储空间与外部存储空间之间进行移动。 当你的应用程序被安装在外部存储空间中,需要知道以下几点 1,将应用程序安装到外部存储空间中,并不会影响程序的性能,只要外部存储被挂载到设备上即可。 2,apk文件将被存储到外部存储空间中,但是用户数据,数据库,dex文件以用解压后的本地代码仍然会被存储到内部存储空间中。 3,应用程序会对应用唯一的容器,此容器是一个被加密过的随机数,解密只能通过应用程序原始安装位置。 4,用户可以通过系统设置将应用程序移到内部存储空间。 特别要注意:当用户通过USB大容量存储共享文件或者通过系统设置将sdcard unmount时,外部存储将从设从设备上unmount,此时正在运行的被安装在外部存储空间的应用程序将被kill掉。 应用程序能够被安装到外部存储空间这一特性只能适用于设备的API版本在8及以上才可以。低于8,应用程序将被安装到内部存储空间且不能够被移动到外部存储空间。由于目前大部分的设备的API版本通常都在8以下,所以这里对于API版本小于8的情况不予说明。 以下情况下的应用程序不应该安装在安装在外部存储空间中。
当用户通过USB大容量存储与电脑共享文件时,任何正在运行且被安装在外部存储的应用程序都将被kill.kill应用程序,有时对用户是不可见的,这种情况下的应用程序被kill掉了将会非常严重。如果你的应用程序具备以下特征且你想让你的应用程序按照你所预想的那样运行,你最好不要将应用程序安装到外部存储空间。 1,Services.
正在运行的Service被kil掉将不会重启在外部存储设备重新挂载时。但是你可以通过intent注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE广播,它会通知被安装到外部存储的应用程序系统的外部存储又可以再用了,这时你就可以重启你的service了 2.Alarm Services
通过AlarmManager注册的alarms会被取消,当外部存储重新挂载时,你必须手动再次注册。 3,Input Method Engines
你的输入法将会被默认输入法代替。当外部存储重新挂载时,用户可以能过系统设置重新激活它。 4,Live Wallpapers
此情况与上面第3种情况类似,正在运行的动态壁纸将会被默认壁纸代替,当外部存储重新挂载时,用户可以再次选择此动态壁纸。 5,App Widgets
你的App Widgets将会从桌面上被移除。当外部存储重新挂载时,你的App Widgets仍然不可用,除非你重新设置桌面应用。 6,Account Managers
通过AccountManager创建的帐户将会消失,直到外部存储重新挂载 7,Syn Adapter与Device Administrators(暂时没有搞懂) 8,Broadcast Receivers listerning for "boot completed"
由于系统发送的ACTION_BOOT_COMPLETED广播在外部存储挂载前,所以安装在外部存储的应用程序都收不到此广播即开机广播。
android关于installLocation的更多相关文章
- 如何将为Android开发的AIR应用转移到SD卡
如果你想用户能够将为Android开发的AIR应用转移到SD卡上,所需要做的是在你的应用程序描述符中修改一下.如果你想你的应用程序默认安装到内置存储器中,但是允许用户把它转移到SD卡上,设置andro ...
- android:installLocation = "auto" 的用法
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:inst ...
- android:installLocation简析
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:inst ...
- android:installLocation 解析
决定了apk安装位置 有三个选项:1.auto 2.internalOnly 3.preferExternal http://www.cnblogs.com/Lefter/archive/2012/0 ...
- 【墙内备份】Android 6.0 APIs
Android 6.0 APIs In this documentSHOW MORE Fingerprint Authentication Confirm Credential App Linking ...
- android .apk安装时遇到NSTALL_FAILED_CONTAINER_ERROR错误
在一台酷派上装apk时遇到问题: android Installation error: INSTALL_FAILED_CONTAINER_ERROR 遇到问题后baidu google修改为andr ...
- Android存储空间不足的解决办法
安装应用时,有时会出现错误Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE,这是存储空间不足的错误,这时就只能将应用安装到SD卡,在And ...
- Android实现系统重新启动
有些Android版本没有系统重启的功能,非常不方便.需要我们自己开发一个能够重新启动的应用. 首先定义布局文件: <?xml version="1.0" encoding= ...
- Android学习笔记之AndroidManifest.xml文件解析(转)
//自已备注: <?xml version="1.0" encoding="utf-8"?>//说明了版本号,字符集 <manifest xm ...
随机推荐
- [Python]网络爬虫(一):抓取网页的含义和URL基本构成
一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个 ...
- MKDOCS在线文档编辑器
http://www.mkdocs.org/ api接口文档编写 ,效果非常不错
- 调试postgresql9.5.2最新源码
最近在考量数据库的选型,考虑后期把数据切换到postgresql ,postgresql源码用c实现,代码很精炼完美,值得学习下 首先去pgsql官网下载最新的源码 ,然后还需要perl,bison ...
- MVC传递Model之TempData、ViewData、ViewBag差别及用途
MVC使用过程中常常会用到TempData.ViewData.ViewBag三种方式,这三种什么差别呢? TempData:默认存储于Session中,可通过继承ITempDataProvider接口 ...
- Android中配置JDK和SDK的环境变量
JDK环境变量的配置: 右击"计算机"或"我的电脑",选择"属性"-->"高级"或"高级系统设置&quo ...
- [Usaco2006 Nov]Corn Fields牧场的安排 壮压DP
看到第一眼就发觉是壮压DP 然后就三进制枚举子集吧. 这题真是壮压入门好题... 对于dp[i][j] 表示第i行,j状态下前i行的分配方案数. 那么dp[i][j]肯定是从i-1行转过来的 那么由于 ...
- windows 下一个 easy_install 设备
下载安装python安装工具 1,方法是下载ez_setup.py后 2,在cmd下运行 python ez_setup.py.就可以自己主动安装setuptools 3,环境变量设置将 C:\Pro ...
- 查看源码Vim+Cscope
http://blog.csdn.net/huiguixian/article/details/7044869
- Linux I/O Scheduler--CFQ(上)图解
http://blog.csdn.net/vanbreaker/article/details/8299491 http://doc.okbase.net/29060569/archive/46628 ...
- WCF - REST服务
WCF REST服务 一个基于REST的WEB服务操作请求只需要体现两点 一是资源的唯一标识 二是操作类型 资源的唯一标识通过URI来完成 而操作类型通过HTTP方法(GET/HEAD POST PU ...