在持久进程中启用 ContentProvider 无法正常工作?

Enabling a ContentProvider in a persistent process doesn't work properly?

我不知道以前是否有人尝试过,但是如果您正在开发一个 Android 平台密钥签名 persistent 应用程序,该应用程序带有一个在运行时使用 [=11= 以编程方式启用的 ContentProvider ] 你可能会发现,在启用它之后,其他进程可以看到提供者(ContentResolver#acquireContentProviderClient(...) returns 一个非空客户端),但是所有调用提供者的尝试都会永远挂起调用者。是否使用 PackageManager.DONT_KILL_APP 并不重要。我不确定这个错误是否存在于 Android 的所有版本中,但我在 Jelly Bean 4.2 中看到了它(这没什么好说的,因为那个版本中似乎有很多错误)。

修复方法是使用 PackageManager.DONT_KILL_APP 然后立即调用:

android.os.Process.killProcess(android.os.Process.myPid())

然后进程将重新启动,以编程方式启用的 ContentProvider 将开始正常工作。