多用户设备中的 Android ContentProvider 和服务

Posted

技术标签:

【中文标题】多用户设备中的 Android ContentProvider 和服务【英文标题】:Android ContentProvider and Service in Multi-User Devices 【发布时间】:2019-07-15 17:35:36 【问题描述】:

多用户 android 设备中,当我们切换到其他次要 用户(使用Ui 或以编程方式)时,Android 是否保留任何Primary 活跃的用户组件,例如启动 ContentProviders 或后台 Services

【问题讨论】:

【参考方案1】:

要知道的主要事情是 Android 用户可以在后台运行(至少在 Android 10 之前)。如果您启动用户 A 然后切换到用户 B,用户 B 将成为活动用户,但用户 A 仍将在后台运行,直到 Android 决定停止它,因为资源不足。

对于 Primary 用户尤其如此,因为默认情况下它永远不会被 Android 停止(因为它与运行 Android 的所有系统服务的 System 用户合并)。

这意味着当您切换到Secondary用户时,Primary用户仍将继续在后台运行,因此Primary用户的应用程序将继续在后台运行(他们的大部分Android组件也是如此)。在某些时候,如果 Android 需要资源,它可以决定停止任何 Android 用户的应用程序,甚至完全停止任何在后台运行的辅助 Android 用户。

【讨论】:

以上是关于多用户设备中的 Android ContentProvider 和服务的主要内容,如果未能解决你的问题,请参考以下文章

XMPP Smack 聊天应用程序中的多设备支持

Android 设备管理员 - 禁用未在(多用户)访客帐户中应用的相机

Android - 我们应该将用户名和密码保存在设备内存中的啥位置?

替换现有项目中的 Asynctask 无需太多代码更改

Android ANR分析

附近设备中的应用程序通信,无需用户干预