首页 > 编程语言 >Android应用程序的安装位置(二)

Android应用程序的安装位置(二)

时间:2023-04-30 10:32:27浏览次数:52  
标签:外部 存储器 应用程序 重新 挂载 Android 安装


不应该安装在外部存储器上的应用程序

当用户启用USB存储器来跟计算机共享文件时(或者是卸载或移除外部存储器),任何被安装在外部存储器上,并且当前正在运行的应用程序都会被杀死。在USB存储器被禁用和外部存储器被重新挂载到设备上之前,系统不会有效的感知到引用程序的存在。除了终止应用程序并让它对用户无效之外,这样做还可以中断某些更严重的应用程序类型。为了让你的应用程序能够像预期的那样,如果它使用了以下功能,你不应该允许你的应用程序被安装在外部存储器上,由于在外部存储器被卸载时,会引发一些后果:

Services

        在外部存储器被卸载时,正在运行的Service将会被终止,而在外部存储器重新被挂载时,它也不会被重启。但是,你可以注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE类型的广播Intent,当被安装在外部存储器上的应用再次对系统有效时,它会给你的应用程序发通知。这时,你可以重启你的服务。

Alarm Services

       你用AlarmManager注册的闹钟会被取消。在外部存储器被重新挂载时,你必须手动重新注册闹钟。

Input Method Engines

       你的IME会被默认的IME替代。当外部存储器被重新挂载时,用户可以打开系统设置重新启用你的IME。

Live Wallpapers

      你的正在运行的LiveWallpaper会被默认的LiveWallpaper所替代。当外部存储器被重新挂载时,用户可以再次选择你的LiveWallpaper。

App Widgets

      你的AppWidget会被从主屏上删除。当外部存储器被重新挂载时,你的AppWidget不会自动的对用户有效,除非系统重新设置主应用程序(通常会一直到系统重启)。

Account Managers

     你用AccountManager创建的账号,会一直到外部存储器被重新挂载才会显示。

Sync Adapters

     直到外部存储器被重新挂载,你的AbstractThreadedSyncAdapter和所有的异步功能才会工作。

Device Administrators

     你的DeviceAdminReceiver和所有的管理员能力会被禁用,这可能会产生一些不可预知的结果,甚至会持续到外部存储器被重新挂载之后。

Broadcast ReceiversListening For “boot completed”

     在外部存储器被从设备上卸载之前,系统会发送ACTION_BOOT_COMPLETED广播。如果你应用程序被安装在外部存储器上,它就不会接收到这个广播。

Copy Protection

     如果你的应用程序使用了GooglyPlay的复制保护功能,你的应用程序不会被安装在设备的SD卡上。但是,如果你使用了GooglePlay的ApplicationLicensing来代替,你的应用

     程序就可以被安装在内部或外部存储器上,包括SD卡。

如果你的应用程序使用了上述功能,你就不应该允许你的应用程序安装在外部存储器上。默

internalOnly”值的anroid:installLocation属性来明确说明。尽管这样不会改变默认行为,但它会明确指示你的应用程序只能被安装在内部存储器上,并告诉其他开发者是已经被决定的事。

应该安装在外部存储器上的应用程序

简单的说,任何不使用上述所列功能的应用程序安装在外部存储器上是安全的。通常一些大型游戏会允许把应用程序安装在外部存储器上,因为通常游戏在不活动时不会提供额外的服务。当外部存储器无效,且游戏进程被杀死时,不会影响外部存储器再次有效且用户重启游戏时的可视效果(假定游戏在标准的Activity生命周期中正确的保存了它们的状态)。

如果你的应用程序需要几M字节存储空间,你就应该认真考虑是否允许应用程序安装在外部存储器上,以便用户可以保留内部存储的空间。

标签:外部,存储器,应用程序,重新,挂载,Android,安装
From: https://blog.51cto.com/u_548275/6237737

相关文章

  • Linux系统软件安装
    实战章节:在Linux上部署各类软件前言为什么学习各类软件在Linux上的部署在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,但是并没有一些具体的实操能够串联起来这些知识点。所以,现在我们设计......
  • Office2003 每次启动时弹出安装界面
    Office2003每次启动时弹出安装界面安装路径:E:\ProgramFiles(x86)\MicrosoftOffice\OFFICE11\EXCEL.EXE启动后监视相关文件注册表等,找到msiexec.exe相关调用,最后最终到:MSO.DLLC:\ProgramFiles(x86)\CommonFiles\microsoftshared\OFFICE11\MSO.DLL跟踪函数确......
  • Django4全栈进阶之路23 项目实战(报修类型表):应用程序命名空间app_name和分页组件pagina
    1、应用程序命名空间app_namefromdjango.urlsimportpathfrom.importviewsfrom.viewsimportRepairDetailViewapp_name='repair'urlpatterns=[path('repair_types/',views.RepairTypeListView.as_view(),name='repair_type_list�......
  • ReSharper 2019.2.3安装教程
    摘抄:ReSharper2019破解版-ReSharperUltimatev2019.2.3完美破解版下载(附注册补丁)-艾薇下载站(aiweibk.com)安装准备文件:1、运行安装程序,JetBrains.ReSharper.2019.1.1.exe选择你需要的工具组件,并勾选接受协议,点next我这里就选了第一项组件,其他组件不知道什么意思 2......
  • Docker实战笔记4-安装jenkins
    文章目录拉取jenkins镜像排查问题验证结果总结拉取jenkins镜像在官方镜像仓库查询jenkins镜像https://hub.docker.com/r/jenkins/jenkins拉取镜像dockerpulljenkins/jenkins结果如下:zhao@sh-zhao~%dockerpulljenkins/jenkins:latestlatest:Pullingfromjenkins/j......
  • ubuntu安装docker
    卸载旧版Docker(可选):sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc更新apt包索引并安装依赖:sudoapt-getupdatesudoapt-getinstallapt-transport-httpsca-certificatescurlgnupglsb-release添加Docker的官方GPG密钥:curl-fsSLhttps://downl......
  • ubuntu安装nodejs 14
    nodejs的每个大版本号都有相对应的源,比如这里的10.x.x版本的源是https://deb.nodesource.com/setup_10.x。所以在终端执行:curl-sLhttps://deb.nodesource.com/setup_18.x|sudo-Ebash-点击查看命令解释这个命令是用来添加Node.js18.x的仓库地址。具体来说,它通过curl......
  • 在VMWare上安装群晖DS918+ 7.0系统
    多图预警首先要下载引导文件、系统文件以及相关工具https://cowtransfer.com/s/8925a225faa940点击链接查看[DS918+7.0],或访问奶牛快传cowtransfer.com输入传输口令xinjil查看;引导文件转换引导文件为了在虚拟机中使用群晖的引导,第一步要做的就是转换文件格式,VMWa......
  • [Linux]debian 安装 TightVNC
    1.首先安装TightVNCsudoapt-getinstalltightvncserver2.配置TightVNCtightvncserver:13.启动VNC服务器tightvncserver-geometry1024x600:1然后就可以通过VNC本地端来访问了。在软件里填入ip:1,输入密码即可访问......
  • [Linux]raspbian安装xrdp(远程桌面)
    1.首先换源:输入以下命令sudosed-i"s@http://deb.debian.org@https://mirrors.163.com@g"/etc/apt/sources.list2.update是更新软件列表,upgrade是更新软件。这两个命令一般是一起使用的。3.需要在Debian系统中安装xrdp,xrdpisadaemonthatsupportsMicrosoft'sRemoteD......