安卓App通过“自启动”“关联启动”唤醒对个人信息保护意味着什么?
最近,有网友更新MIUI 12系统后,在其提供的功能中发现,单独启用一款App后,短时间内该App唤醒了十余款其他App应用,这种“关联启动”或“链式启动”的现象在安卓用户群体中引发热烈讨论,很多网友表示“不解”“后怕”。事实上,App自启动、关联启动等后台唤醒问题,在国内的安卓生态下已经存在了很多年了,很多手机厂商在操作系统层面也都会对类似的行为进行监控和记录,笔者在EMUI 9.1系统下也可以查看到App自启动和被关联唤醒的启动记录。如下图1所示。
网友之所以感到“后怕”,主要对几个问题产生了疑问:为什么自己没有操作的情况下App就能自启动?运行一个App时,为什么要关联唤醒其他App,是有合作?在App自启动或关联唤醒时,是否可能过度收集个人信息?本文将围绕这几个问题,逐一分析,答疑解惑,给出建议。
一、安卓系统的App运行机制分析
为回答上面的问题,我们先简单了解一下安卓的组件和进程的分类和特性,能帮助我们弄清楚App为什么能够被唤醒并在后台“悄悄运行”,唤醒后到底能做点什么。
1、安卓App实现唤醒的基础——安卓的四大组件
除了用户主动打开App这种大家周知的方式,在安卓系统下,提供了活动(Activity)、服务(Service)、广播(Broadcast)、内容提供(ContentProvider)四大组件,Activity和Service两个组件经常被用来实现跨应用的唤醒,Broadcast可用于通过监听广播事件实现自启动,ContentProvider组件较少应用在唤醒的场景。
• 活动组件(Activity)
活动组件(Activity)用于显示用户界面,用户可以通过Activity交互完成启动其他应用的操作。使用Activity启动其他应用时,绝大部分情况用户可以明确感知。如应用A可通过某个Activity调用本身的四大组件提供的方法,实现应用B中相应组件的启动。如下图2所示。
• 服务组件(Service)
通过服务(Service)也可以实现应用间的唤醒功能,一般情况唤醒其他应用的服务用户是无感知的。如应用A可通过某个Service调用本身的四大组件提供的方法,实现应用B中相应组件的启动。如下图3所示。
•