【发布时间】:2018-03-12 21:29:25
【问题描述】:
我曾经有一个活动 A:
private void launchActivityBAndFinish() {
Intent activityB = makeActivityBIntent();
startActivity(activityB);
finish();
}
这不好,因为 ActivityB 需要一些时间才能启动(它也可能在另一个进程甚至其他应用程序中)。因此,正如所写的那样,它将在 ActivityA 立即消失和 ActivityB 开始之间留下视觉差距。期望的行为是一直显示 ActivityA(加载微调器),直到 ActivityB 实际可见。
所以我将其更改为将 android:noHistory 添加到 ActivityA 清单并删除 finish() 调用。它按预期工作(ActivityB 平滑地显示在 ActivityA 之上,而后者已从历史中消失)。除非 ActivityB 在启动后很快被关闭(通过调用 finish() 的完全可见的 ActivityB UI 上的 [X]),但它实际上并没有工作。
所以我的问题是:
1) android:noHistory 何时准确触发finish()? Docs 说当 ActivityA 不再可见但根据描述的异常情况似乎并非如此。
2) 实现我所描述的所需 UI 行为的正确方法是什么?
谢谢!
【问题讨论】:
-
在ActivityB中调用
setContentViewmethod之前做什么?我认为您在绘制布局之前会花费很多时间。 -
ActivityB 在另一个进程中,可能是另一个应用程序,因此需要一段时间才能启动。它还进行磁盘 I/O,因此绘制内容也需要一段时间。因此,我正在寻找等到它显示然后关闭 ActivityA 的方法(ActivityB 不在我的控制范围内)。
标签: android android-intent android-activity android-manifest android-lifecycle