我正在使用android 2.2开发一个应用程序。
当更改设备方向时(通过旋转设备),在我的活动范围内绘制黑色屏幕(甚至没有活动标题),它需要几秒钟(7-15秒),然后活动是终于画了。
我测试了它的模拟器和两个不同的设备,行为是一样的。
在LogCat中我有下一个输出:
02-02 09:18:06.044: WARN/WindowManager(1300): MyActivity freeze timeout expired.
02-02 09:18:06.044: WARN/WindowManager(1300): Force clearing freeze: AppWindowToken{4515af88 token=HistoryRecord{44f52458 com.project.package/.MyActivity}}
02-02 09:18:08.054: WARN/WindowManager(1300): Window freeze timeout expired.
02-02 09:18:08.054: WARN/SurfaceFlinger(1300): timeout expired mFreezeDisplay=1, mFreezeCount=0
02-02 09:18:08.054: WARN/WindowManager(1300): Force clearing orientation change: Window{45178a00 com.project.package/com.project.package.Activity paused=false}
我不知道为什么会这样。 感谢您的意见,建议,答案。
答案 0 :(得分:4)
感谢您的评论,对于迟到的回答感到抱歉。
问题是我的应用程序中有一个很大的非常大的列表(在ListView中接近2000行)。如果我没有绘制该列表,那么应用程序就可以了。
这是可以理解的,2000行,每一行都带有图标和文字,太多了!。
所以我决定实现一个索引,或者是非常智能的Android Market列表(这个列表很棒,没有索引,但只绘制了你所看到的行)。
我想,当设备旋转(带有大列表)时,它会尝试删除引用或类似的东西,并且需要很长时间,并且会抛出超时,这就是显示黑屏的内容。但这只是一个假设
我试图清除onPause()中的列表,但它没有解决问题。
无论如何,问题是:在Activity中查看过多的对象。 我的解决方案:使用索引列表(不要在Activity中使用很多View对象)。
希望这对其他人有用。