编辑添加更多细节:( 最近两个月前问过...仍然没有找到解决方案)
我的活动有点复杂的观点.在技术意义上并不复杂......只有很多事情要发生.此特定应用程序中的所有活动都设置为FullScreen NoTitleBar,并且它们都设置为横向方向.当应用程序被隐藏然后恢复时,我注意到在开发的早期阶段,布局不经常垂直向下滑动,就好像为标题栏和状态栏腾出空间一样.
在开发的后期,该应用程序现在调用各种外部意图.我现在注意到,当从外部处理的触发意图(例如创建"选择器"意图或选择图像)恢复时,更倾向于进行相同的转换.我能够使用完全相同的步骤不一致地重现它...有时它有时会发生.似乎在测量和布局的各个阶段之间存在竞争条件.我假设系统正在为我做的其中一个步骤是检查全屏和notitlebar,并进行必要的转换.在某些情况下可能会发生这种情况.
我把一堆日志记录,并调用invalidate(),requestLayout()等尝试捕获竞争条件,但问题似乎是我的布局外部.我的根布局的top()和bottom()值分别始终为0和屏幕的高度,即使我在问题发生时记录这个值也是如此.
是否有其他方法的Window,WindowManager或任何其他系统视图相关的对象,我可以强制完全重新测量,重绘,重新检查当前的主题/样式标志?
我有完全相同的问题,并尝试了几个aproches(如上所述).他们都没有工作.但是我发现了以下解决方法:
protected void onResume() {
super.onResume();
handler.postDelayed(new Runnable() {
public void run() {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
在这个程序中,视图会做一个短暂的闪烁,但至少它不会保持歪曲.仍然需要找到一个干净的解决方案.然而,这支持了你的论点,即存在某种时间或种族问题.
| 归档时间: |
|
| 查看次数: |
7878 次 |
| 最近记录: |