延迟(或根本不)显示 Snackbar

Delay (or not at all) Display of Snackbar

一个我无法诊断或弄清楚的非常奇怪的问题,所以我希望其他人已经看到了这个并且可能对正在发生的事情有线索。

所有活动都继承自 AppCompatActivity。

场景是这样的:

  1. Activity 1(扩展 AppCompatActivity)启动 Activity 2
  2. Activity 2 在用户输入后执行一些操作,然后通过 onBackPressed
  3. 退出
  4. Activity 1 根据 Activity 2 执行的操作显示一个 Snackbar 作为确认的手段

问题是 Snackbar 根本不显示,或者延迟显示并在关闭时闪烁。如果我触摸屏幕并与 Activity 1 交互,Snackbar 会立即可见。

我还通过开发人员选项打开了 "Show layout boundaries",我可以看到 Snackbar 在我触摸屏幕(或它开始动画化)之前实际上并没有显示(不可见)。

我创建了一个示例应用程序,它似乎在那里运行良好,但在我们的生产应用程序中却没有这样的运气。 Activity 1 本身在 ScrollView 中显示大量信息和内容,但我不认为这会导致问题,除非正在发生我无法分辨的渲染过程,这会导致显示延迟。

我创建了一个 project 可以用来演示这个问题。我相信这是一个错误,您可以通过不使用自己的转换来解决它。虽然我也相信并不是所有的过渡动画都会导致这个问题。我认为这种情况下的保持动画是罪魁祸首。

这里是问题的简要概述:

  1. Activity 1 和 2 都有包含大量内容的滚动视图。
  2. Activity 2 使用 overridePendingTransition( slide_up, slide_down) 打开 Activity 2,尽管这对于本示例不是必需的。
  3. Activity 3显示内容然后关闭:

    a) 使用 overridePendingTransition( hold, slide_down )。为了在这种情况下看到 Snackbar,您需要触摸屏幕并与 Activity 1.

    交互

    b) 不使用过渡。 Snackbar 应该可见。

我对这个问题的解决方案是删除 overridePendingTransition。如果您对此有其他想法,请发表评论。