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