3

我有我的主要活动 A,当用户按下按钮时,我打开另一个活动 B。但是当这种情况发生时,B 不仅仅出现在 A 的顶部:

  • A消失
  • 安全键卫出现
  • B出现

当我摆脱 B 时,同样的事情也会发生。这很烦人,因为屏幕上有很多没有真正用途的闪烁。有没有办法在键盘保护处于活动状态时实现从 A 到 B 的直接转换而不将 2 个活动合并为 1 个?

这是我在 onCreate 中为这两个活动所做的事情:

getWindow().addFlags(
        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

这是我开始活动的方式:

        final Intent intent = new Intent(Sand.this, EditRule.class);
        intent.putExtra(DB.KEY_PARENT_ID, id);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivityForResult(intent, 0);
        overridePendingTransition(0, 0);

我还尝试在活动主题中设置 null android:windowAnimationStyle 但没有运气。

更新:我提交了这个错误: https ://code.google.com/p/android/issues/detail?id=68465&thanks=68465&ts=1397301860

谢谢,泰奥

4

1 回答 1

1

大约一年前,我在 ICS 和 JB 上广泛研究了这个问题(和其他几个工程师)。无法避免闪烁,我强烈怀疑 KitKat 仍然是这种情况。您应该提交该错误。

(如果您查看 Android 中与 Keyguard 相关的源代码,那是相当多的……大量代码/策略充斥着特殊情况。由于这种情况在任何地方都没有明确记录,即使您可以让它在一个版本上工作,我不会依赖它始终如一地工作。)

最终,我们通过将所有不能闪烁的锁屏 UI 合并到一个 Activity 中来解决这个问题。这很不愉快,但它奏效了。

于 2014-04-11T20:30:44.187 回答