我有我的主活动A,当用户按下按钮时,我打开另一个活动B。但当这种情况发生时,B不仅仅出现在A的顶部:
消失了
出现安全的键盘保护
乙出现
当我摆脱B的时候,同样的事情也会发生。这很烦人,因为屏幕上有很多没有真正目的的闪烁。当keyguard处于活动状态而不将2个活动合并为1时,是否有任何方法可以实现从a到b的直接转换?
以下是我在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,但是没有成功。
更新:我提交了此错误:
https://code.google.com/p/android/issues/detail?id=68465&thanks=68465&ts=1397301860
谢谢,
TEO
最佳答案
大约一年前,我在ics和jb上对这个问题进行了广泛的研究(和其他几个工程师一起)。这是无法避免的闪烁,我强烈怀疑仍然是在基特卡特的情况。你应该把那个错误归档。
(如果你看看android中与keyguard相关的源代码,它相当..大量的法规/政策充斥着特殊情况。由于这个案例在任何地方都没有明确的文档记录,即使您可以让它在一个版本上工作,我也不会依赖它的一致性工作。)
最终,我们解决了这个问题,将所有不可闪烁的锁屏用户界面合并到一个活动中。这很不愉快,但很有效。