【问题标题】:android:noHistory not finishingandroid:noHistory 未完成
【发布时间】: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


【解决方案1】:

在这种情况下,ActivityB 是半透明的,因此 android:noHistory 没有关闭 ActivityA。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2012-08-03
    • 2017-10-19
    • 2013-08-16
    • 2017-08-25
    相关资源
    最近更新 更多