我正在尝试编写一个 .apk 来测量旋转 Android 设备的屏幕需要多长时间(循环几个旋转)。
我正在使用调用来setRequestedOrientation()将屏幕重新定向到 4 个位置(、PORTRAIT和LANDSCAPE)。REVERSE_PORTRAITREVERSE_LANDSCAPE
我的问题是我无法判断轮换何时完成。我尝试了一些解决方案,但每个都有自己的问题。
- 我尝试使用
onConfigurationChanged(). 问题是当方向改变从传感器发生时,这个方法会被触发,而不是从setRequestedOrientation().setRequestedOrientation()在我之前FULL_SENSOR调用.onConfigurationChangedsetRequestedOrientation() - 我尝试
setRequestedOrientation()通过添加一个while循环来检查屏幕方向(以度为单位)来进行某种“阻塞”。android.view.Display.getRotation()我之前打电话setRequestedOrientation()并用while循环阻塞,直到它改变。不幸的是,它也不起作用。它在 UI 重新显示之前返回。 - 我试图遵循活动的生命周期,等待
onCreate()再次被调用,假设轮换完成。以前,我一直在循环,直到我的计数器达到一个值,在每次迭代调用setRequestedOrientation(). 在这种情况下,我的 while 循环变成了一个 if 语句,我假设onCreate每次都会调用该函数,但onCreate()在几次迭代后不会被调用。UI 似乎也没有重绘。 - 我在网上找到的最终解决方案(但还没有完全实现)是
waitForIdleSync()在setRequestedOrientation().waitForIdleSync()是 Instrumentation 类的一部分,我认为这只是为了测试而不是标准的.apk。
任何想法都会受到欢迎。我将衷心感谢您的帮助。