Android 10是Google对Android的最新更新,对成熟的OS进行了一些改进。最新更新中的大多数更改和新功能要么在Google I / O期间由Google自己突出显示,要么在公共资源发布后不久被发现。但是一些显着的变化的确会悄悄消失,几个月后,当有人不小心跌倒它们时,这些变化便浮出水面。这就是这种情况的发生,因为事实证明,Android 10允许开发人员在卸载其应用程序之前询问其用户是否要保留应用程序数据。
AndroidPolice的最新报告强调了此功能。像WhatsApp 和 ASR Voice Recorder这样的应用程序 已开始为Android 10用户提供保留即将卸载的应用程序数据的选项。
选中上面显示的复选框,即使该应用程序已卸载,该应用程序数据仍会保留在手机上。当您重新安装该应用程序时,您将返回到该应用程序中的相同状态,就像从未从未卸载过它一样。
Mishaal对幕后发生的情况做了一些调查。要了解这一点,您需要首先了解Android上的应用程序如何在设备上存储文件,并且存储文件的主要位置有三个:
内部(用户无法访问,没有root用户)存储中的特定于应用程序的目录:这些文件夹位于/ data / data,其他应用程序无法访问,或者在用户通常将手机插入PC时也无法访问。应用程序不需要权限就可以将文件写入此位置中自己的应用程序特定目录。
外部(用户可访问)存储中的特定于应用程序的目录:这些文件夹位于/ data / media / {user} / Android / data中 ,具有适当权限的其他应用程序以及通常在插入应用程序的用户都可以访问这些文件夹在他们的手机到计算机上。应用程序不需要在此位置将文件写入其自己的特定于应用程序的目录的权限,但如上所述,它们确实需要从其他应用程序访问数据的权限。
外部(用户可访问)存储中的任何目录:应用可以请求访问外部存储的权限,从而允许应用在外部存储上创建需要存储的任何文件夹。
扩展WhatsApp的示例,内部存储中的WhatsApp特定于应用程序的目录位于/data/data/com.whatsapp;其在外部存储中特定于应用的目录位于/data/media/{user}/Android/data/com.whatsapp;及其在外部存储中的自定义目录位于/ data / media / {user} / WhatsApp。
之前的Android 10 和前开发启用此为他们的应用程序,当用户卸载应用程序,其在内部的应用程序特定的目录(/数据/数据)和外部(/数据/媒体)存储在默认情况下被删除。外部存储上的多余目录不会被删除,您需要手动删除它们,或者使用SD Maid之类的应用程序为您完成此操作。
使用Android 10,应用程序开发人员可以在清单上添加一个特殊的标记“ hasFragileUserData ”,该标记允许他们在卸载应用程序时询问用户是否要保留应用程序的数据,这就是您在屏幕快照中看到的内容。当您确实取消选中复选框以保留应用程序数据的方式卸载应用程序时,Android会在内部和外部存储中保留而不删除应用程序特定的目录。我们通过检查目录中未添加Manifest标志的应用程序以及类似WhatsApp的已添加Manifest标志的目录来确认这一点。
从表面上看,选择该选项很有意义,因为用户可以暂时卸载应用程序,并且在重新安装后仍可以返回到其先前的状态,这应该可以省去在同一设备上备份和还原应用程序的麻烦。但是,请记住,没有根用户就无法访问/ data / data,因此您作为用户不能使用此过程在设备之间进行无根备份和还原。用户也无法删除/ data / data中遗留的文件无根 因此,如果您以后确实想清除文件,则需要重新安装该应用程序,然后在不选中该复选框的情况下将其卸载。对于太多应用程序使用此选项,您可能会忘记您作为用户选择的应用程序。由于这对于开发人员来说是可选的,而对于用户选择而言是可选的,因此我们确实认为这是一个总体的积极变化,为最终用户提供了更多功能。