假设有 3 个活动,即 ActivityA、ActivityB 和 ActivityC。
<activity
android:name=".ActivityA" />
<activity
android:name=".ActivityB"
android:process=":process2" />
<activity
android:name=".ActivityC" />
活动的实例化流程如下:
- ActivityA 正在主应用程序进程中运行。
- ActivityA 启动 ActivityB。
- ActivityB 在 process2 中创建并运行(因为为其设置了android:process属性)
- ActivityB 现在启动 ActivityC。
- ActivityC在主应用进程中创建并运行(默认为主进程)
要求:
每当从 process2 中的另一个组件创建 Android 组件(Activity、Service 等)时,请确保这些组件仅在 process2 中创建和执行(即使这些组件的android:process未在清单文件中定义)。例如:在上述情况下,应强制 ActivityC 在 Process2 中创建和运行。
要求的原因:
- ActivityB 和 ActivityC 的执行应该是沙盒的,并且由于它们引起的任何问题都不应影响主进程。所以需要在一个单独的进程 - process2 中执行它们。
- ActivityC 在第 3 方 SDK 代码中定义。因此,无法控制为此活动设置属性android:process 。
我在各种论坛中搜索过,但我无法得到这个问题的答案。请让我知道如何实现这一目标。