有没有办法在我的应用程序被 Android 杀死后模拟返回我的应用程序?

Is there a way to simulate returning to my app after it was killed by Android?

我有一个应用程序 (appA) 可以扩展布局 (layout1) 并让用户在用另一个布局 (layout2) 替换该布局之前做一些事情,用户可以通过 [=11= 从中启动另一个应用程序 (appB) ]

appB 是一个基于 Unity3D 的怪物,它对设备的 memory/processing 功率限制征税,因此当 appA 在后台时,它经常被 Android 清理。

当 appB 完成时 Android 为我重新创建了 appA,但这样做的方式令人困惑。

即:它调用 onCreate 但它启动时 appA 仍然显示 layout2,即它在进入 appB 之前膨胀的布局。

这很令人困惑,因为 onCreate 重新初始化了我所有的变量并且似乎是从头开始但不知何故保留了仍在显示 layout2 的状态。

这明显不同于我在启动到 appB 时在 appA 上调用 finish() 然后让 appB 从头开始​​ appA 的行为,它会(并且确实)首先膨胀 layout1。

我的问题是这种行为不一致。很多时候 Android 管理 appB 而不需要 appA 内存 space 并且调试这真的很困难。

我想知道是否有一些手动方式(通过 Android Studio 或代码)在我处于 appB 时引发对 appA 的 Android 清理,以便能够看到并测试在 Android.

恢复后返回 appA 的副作用

我发现最方便的方法实际上是用一个 activity 创建一个单独的应用程序,然后在 onResume() 中执行以下操作:

@Override
protected void onResume() {
    super.onResume();

    ActivityManager activityManager =
            (ActivityManager) getSystemService(ACTIVITY_SERVICE);

    activityManager.killBackgroundProcesses("your.app.id");
}

每当我需要模拟我的应用程序被 Android 杀死时,我只需切换到这个应用程序并返回到我测试的应用程序。

I'm wondering if there's some manual way...

是的,有。

您应该在 appA 进程处于后台时通过命令行工具或 IDE.

终止它

在不重复其他开发人员的研究的情况下,我将向您致意 How to simulate Android killing my process