每隔一段时间(并且通过没有明显的再现步骤),设备将进入屏幕完全占用的状态。通过'抓住',我的意思是绝对没有任何东西会被吸引。这种行为就好像我们在主线程上有一个阻塞调用一样,但是我已经能够在调试器上捕获这个行为,并确认这不是问题(更不用说我们没有收到来自Android的)。
为了加剧混乱,我注意到当我与屏幕交互时,应用程序通过我们的日志记录语句正常运行。因此,当我进行滚动手势时,我能够看到我们夸大视图,进行适当的网络调用,& c。该应用程序功能齐全,除了屏幕没有绘制任何东西。
在Eclipse中使用UI XML快照工具甚至可以显示应该在屏幕上的视图(尽管绘制的图像仍然是冻结的'截图')。
我会注意到我们最近引入了动画,特别是使用了nineoldandroids项目来帮助我们向后移植一些功能。问题似乎发生在所有手机上(包括我的4.2.2 Galaxy Nexus),但同样,再现很难。
我们完全无法解释这种行为,并希望能够深入了解造成这种问题的原因和/或如何解决这个问题!
编辑:经过今天的大量测试后,似乎没有在任何视图上调用draw(...)。这可以解释为什么屏幕被“冻结”。测量 被调用(这解释了为什么UI XML快照正确显示应在屏幕上的内容)。
答案 0 :(得分:1)
我们已经弄清楚出了什么问题,希望这有助于将来的某些人。
虽然我们仍然不确定如何,但我们的应用程序可能会进入一个onPreDraw侦听器已注册但从未注销的状态。此外,在 onPreDraw侦听器中有一个状态会导致它返回false。因此,当Android通过所有onPreDraw侦听器以确保它可以绘制时,我们不再引用的这个侦听器会不断返回false。消除这种情况似乎已经解决了我们的问题。