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 ...
随机推荐
- Eclipse插件收藏列表
viPlugin 2.11.0 AnyEdit Tools 2.4.4 EclipseColorer 0.8.0 PyDev – Python IDE for Eclipse 2.7.5 MoreUn ...
- Centos6.4 xen编译部署
ruiy亲测成功,现将步骤总结如下,一步步往下将可 原文链接 http://blog.csdn.net/liyakun1992421/article/details/9071061 xen 与 kvm ...
- PL/SQL练习
简单结构 set serveroutput on; DECLARE v_name ); BEGIN v_name := 'hello'; dbms_output.put_line(v_name); E ...
- 武汉Uber优步司机奖励政策(2月1日~2月7日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
转载地址 : http://blog.csdn.net/21aspnet/article/details/6729724 一.概念 对齐跟数据在内存中的位置有关.如果一个变量的内存地址正好位于它 ...
- jmeter http get 登录
登录页url:http://www.ablesky.com/login.do?fromurl=http%3A%2F%2Fwww.ablesky.com%2Findex.do 登录参数用firebu ...
- 仿写自己的一个加载语言包的L函数
<?php /** * [L 加载语言的L的方法] * @param [string] $key [语言键的名称] * @return [string] $value [取到的语言值] */ f ...
- Android五大布局重新回顾
- ASP.NET MVC- VIEW Using the TagBuilder Class to Build HTML Helpers Part 3
The ASP.NET MVC framework includes a useful utility class named the TagBuilder class that you can u ...
- 用CSS border相关属性画三角形
效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2l3aV9jb2Rlcg==/font/5a6L5L2T/fontsize/400/fill/I0J ...