android:installLocation简析

2023-10-27

文章来源:http://www.cnblogs.com/Lefter/archive/2012/03/07/2383962.html

在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置.

android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    . . .
</manifest>
android:installLocation可以设置为"auto"、"internalOnly"、"preferExternal"三个值中的任何一个.
  auto:程序可能被安装在外部存储介质上(例如:SD Card),但是默认会被安装到手机内存中.当手机内存为空时,程序将被安装到外部存储介质上.当程序安装到手机上后,用户      可以决定把程序放在外部储介质还是内存中.
  internalOnly:默认值.当设置为该值时,程序只能被安装在内存中,如果内存为空,则程序将不能成功安装.
  preferExternal:将程序安装在外部存储介质上,但是系统不保证程序一定会被安装到外部存储介质上.当外部存储介质不可以或空时,程序将被安装到内存中.程序使用了for      ward-locking机制时也将被安装到内存中,因为外部存储不支持此机制.程序安装后,用户可以自由切换程序应该在外部还是内部存储介质上.
注意:当程序使用了Google Play的Copy Protection特性时,只能安装到内存中.
当程序被安装到外部存储介质时,
① .apk文件将被移动到外部存储介质上,但是程序的数据仍然会在内存中
② 保存.apk文件的容器将会使用一个随机生成的密钥进行加密,这样只有安装该程序的设置可以使用存在外部存储介质上的数据.
警告:当外部存储介质被卸载时,安装在该外部存储介质上的程序将立刻被终止掉!
向后兼容性:
  声明了android:installLocation,但android:minSdkVersion小于8时,我们使用不低于Froyo的AVD进行编译,这样在低于Froyo的系统中android:installLocation将被忽略,而不低于Fro  yo的系统中将使用我们指定的android:installLocation.
当我们的程序具有如下行为时我们不应该将程序安装到外部存储介质上
  ①Service
    正在运行的服务将被终止,当外部存储介质被重新加载时服务不会被重启.
  ②Alarm Service
    闹钟服务将被取消,开发者必须在外部存储介质重新加载后重新注册闹钟服务.
  ③Input Method Engines
    输入法将被换成系统输入法,当外部存储介质被重新加载后用户可以通过系统设置来启动我们的输入法
  ④Live Wallpapers
    我们的动态壁纸将被替换为默认的动态壁纸.外部存储介质重载后,用户可以更换回来.
  ⑤Live Folders
    我们的动态文件夹将被移出.
  ⑥App Widgets
    我们的小部件将被移出,通常只有系统重启后我们的小部件才可用.
  ⑦Account Managers
    使用AccountManager创建的账户将会消失,直至存储介质被重新加载.
  ⑧Sync Adapters
    只有外部存储介质被重新加载时,我们的同步功能才可用
  ⑨Device Administrators
    我们的DeviceAdminReceiver将会失效
  ⑩监听开机结束事件
    系统会在加载外部存储介质之前发送ACTION_BOOT_COMPLETED广播.因此安装在外部存储介质的程序将不能接受开机广播.
通常,只要我们没有使用上述的特性,我们就可以将我们的程序安装到外部存储介质上.例如,大的游戏程序.当我们的APK文件有几M大时我们应该认真的考虑是否要将程序移动到外部存储介质上以帮助用户节省内存.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android:installLocation简析 的相关文章

随机推荐

  • 笔记: C语言中的骚操作 (带参宏定义及三目运算实例)

    带参宏定义及三目运算实例 带参宏定义 就是带参数的宏定义 类似函数 三目运算 A B C 即 A为真 则输出B 为假则输出C n 1输出高电平 define CON1 1 PC12 n n HAL GPIO WritePin GPIOC G
  • 2022年度游戏本行业数据报告:十大热门品牌销量排行榜

    2022年游戏本市场的总体局面是 产品竞争极为激烈 同时又各具特色卖点 今年的游戏本市场 市场格局并未有较大的变化 但是新技术 新产品层出不穷 各个游戏本厂商们通过不断创新 提升产品性能 推出了体验感更好的产品 满足了用户不同场景的应用需求
  • HTTP协议和编程实现

    1 HTTP协议 http协议是建立在TCP IP协议之上应用层协议 默认端口为80或者8080 http协议的的特点是无状态 无连接 在访问数据的时候才进行连接 不是长连接 http协议的报文传输的是ASCII码 在TCP IP协议之上
  • 面向对象程序设计的几个基本概念

    面向对象程序设计由6个概念组成 1 类 它是每一个Java程序的基本结构 它包含数据域和数据操作机制 类提供了创建这些软件对象的模板 2 对象 对象是以类为模板创建的实例 以各类可以用来生成任意多个对象 3 封装性 允许或禁止访问类或对象的
  • Centos7 Shell脚本监控磁盘容量实现钉钉告警

    前言 此脚本用来监控服务器磁盘容量实现钉钉告警功能 一 编写Shell脚本 创建脚本存放目录 存放在 data shell 下 mkdir p data shell vim data shell DingTalk Alert bin bas
  • 七款好用的项目管理软件

    TeamLab 它是一个在线商业协作和项目管理的平台 主要功能包括 项目管理 里程碑管理 任务 报表 事件 博客 论坛 书签 Wiki 即时消息等 TeamLab是专为中小型企业 团队打造的系统 使用SaaS解决方案的网站 也就是说 您可以
  • linux 部署Django + apache2 + python3

    之前在本地部署了Django的restful应用Django 从零开始实现简单的restful应用 现在把它部署到服务器上 安装 在部署过程中 很多需要的东西之前已经安装好 所以 python 3 我的服务器是ubuntu 16 04 预装
  • Head First Design Mode(2)-设计模式入门(策略模式)

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 设计模式入门 欢迎来到设计模式世界 我们会看到设计模式的用途和优点 再看看关键的OO原则 通过实例来了解模式是如何运作的 以往是代码复用 现在是经验复用 模拟鸭子的应
  • Character Encoding Issues(good!!!)

    Character Encoding Issues Questions Why What is the default character encoding of the request or response body Why does
  • 【Verilog-26】Net线路连接

    Net是结构描述中为线路连接 连线和接线 建立的模型 net的值是由net的驱动所决定的 驱动器可以是门 UDP 实例模块或者连续赋值语句的输出 语法 1 supply0和supply1类型的net变量分别具有逻辑值0和1 并可以为它定义驱
  • linuxfb简单说明

    framebuffer简介 Linux framebuffer dev fb 是用来屏蔽图形显示硬件的抽象层 如果不对硬件进行抽象屏蔽 不同硬件显卡 可能需要编写不同的驱动和应用程序 而引入framebuffer进行统一的抽象后 开发人员可
  • 【从零开始写博客】链表运用:链表的增删查改及反转(day3)

    代码随想录刷题60天 数组 day2 数组 day1 目录 链表概述 一 链表增删地初次理解 二 链表常见六个操作 三 链表的转置 总结 链表概述 链表是通过指针将一个个节点串起来的数据结构 其优点是增删方便 灵活性强 以下将结合leetc
  • Maven插件开发及Demo演示

    引言 maven不仅仅只是项目的依赖管理工具 其强大的核心来源自丰富的插件 可以说插件才是maven工具的灵魂 本篇文章将对如何自定义maven插件进行讲解 希望对大家有所帮助 背景 讲如何开发maven插件之前 不妨先来聊一下什么是mav
  • Spring: 事务传播机制

    文章目录 1 美图 2 Transactional 注解的属性信息 3 案例 3 1 建表 3 2 项目结构 3 3 配置 3 4 config 3 5 实体类 3 5 业务类 3 6 测试类 3 REQUIRED 4 NOT SUPPOR
  • python接口自动化(十二)--https请求(SSL)(详解)

    简介 本来最新的requests库V2 13 0是支持https请求的 但是一般写脚本时候 我们会用抓包工具fiddler 这时候会 报 requests exceptions SSLError SSL CERTIFICATE VERIFY
  • MySQL简单命令和SELECT查询,给字段起别名【MySQL数据库】

    Java养成计划 学习打卡第六十四天 内容导航 数据库的相关操作 数据库的导入 查看导入数据库中的表 查看表中的数据 查看表的基本结构 简化 查看表的结构 详细 查看mysql数据库的版本号 查询当前使用的数据库 退出mysql SQL查询
  • C#常见的两种错误

    一 WindowsFormsApplication2 Form1 不包含 Form1 Load 的定义 并且找不到可接受类型为 WindowsFormsApplication2 Form1 的第一个参数的扩展方法 Form1 Load 是否
  • 小程序上传发布

    1 上传发布 一个小程序从开发完到上线一般要经过 预览 gt 上传代码 gt 提交审核 gt 发布等步骤 2 预览 使用开发者工具可以预览小程序 帮助开发者检查小程序在移动客户端上的真实表现 点击开发者工具顶部操作栏的预览按钮 开发者工具会
  • Linux终端退出程序不退出解决方案(nohup/screen)

    终端异常退出后 后台进程不关闭的解决办法 1 使用nohup命令 nohup
  • android:installLocation简析

    文章来源 http www cnblogs com Lefter archive 2012 03 07 2383962 html 在Froyo android 2 2 API Level 8 中引入了android installLocat