Android 有了安全键盘,活动之间的转换就很奇怪了

Android 有了安全键盘,活动之间的转换就很奇怪了,android,android-activity,android-windowmanager,keyguard,keyguardlock,Android,Android Activity,Android Windowmanager,Keyguard,Keyguardlock,我有我的主要活动A,当用户按下一个按钮时,我会打开另一个活动B。但当这种情况发生时,B不仅仅出现在A的顶部: A消失了 安全的键盘保护出现了 B出现 当我摆脱B时,同样的事情也会发生。这很烦人,因为屏幕上有很多没有真正意义的闪烁。当keyguard处于活动状态时,是否有任何方法可以实现从A到B的直接转换,而无需将2个活动合并为1个 以下是我在onCreate中为这两个活动所做的工作: getWindow().addFlags( WindowManager.LayoutPara

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

  • A消失了
  • 安全的键盘保护出现了
  • B出现
当我摆脱B时,同样的事情也会发生。这很烦人,因为屏幕上有很多没有真正意义的闪烁。当keyguard处于活动状态时,是否有任何方法可以实现从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);
我还尝试在活动主题中设置一个空的android:windowAnimationStyle,但没有成功

更新:我提交了此错误:

谢谢,
大约一年前,我(和其他几位工程师)在IC和JB上对此进行了广泛的研究。无法避免闪烁,我强烈怀疑KitKat的情况仍然如此。你应该把这个bug归档

(如果你看一下Android中与Keyguard相关的源代码,它是一个相当..大量的代码/策略,充斥着各种特殊情况。因为这个案例没有明确的文档记录,即使你可以让它在一个版本上运行,我也不相信它能始终如一地工作。)


最终,我们解决了这个问题,将我们所有的不得闪烁锁屏UI组合到一个单一的活动中。这是令人不快的,但它起了作用。

同样的问题()但还没有解决方案。我很想知道你是否能找到解决办法。我开始认为我是这个星球上唯一一个有这个问题的人:)事实上,我在寻找一个解决办法已经一年多了。我在Intent.FLAG\u ACTIVITY\u NO\u动画中看到了一个非常微妙的效果,在我的测试中,它使“闪烁”稍微快一点,但并没有消除它。如果悬赏结束时没有解决方案,我想我会提交一个bug。只要确保我理解这一点,当你在活动a和活动B之间转换时,你的锁屏会弹出,然后关闭,然后你的新活动会弹出?你有机会看这篇文章吗?是的,事情就是这样(我看到了那篇帖子,Randy在第一条评论中链接到了同一篇帖子:)我尝试了里面的一切,没有运气。如果真的没有解决方案,我认为将其视为bug是安全的,因为焦点被键盘护卫“偷走”。如果键盘锁解锁,应用程序不会失去焦点。当每个活动锁定标志时,如何设置WindowManager.LayoutParams.FLAG_Discover|KEYGUARD|WindowManager.LayoutParams.FLAG_SHOW_是问题所在。在活动有时间设置这些标志之前,它的一部分已经加载,但没有这些标志。。。