我正在 android 2.2 中开发一个应用程序。
当更改设备方向(通过旋转设备)时,我的 Activity 边界会绘制一个黑屏(甚至没有 Activity 标题),这需要几秒钟(7-15 秒),然后最终绘制 Activity。
我已经测试了它模拟器和两个不同的设备,行为是相同的。
在 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}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样。感谢您的评论,建议,答案。
感谢您的评论,抱歉回复晚了。
问题是我的应用程序中有一个很大的非常大的列表(ListView 中接近 2000 行)。如果我不绘制该列表,则该应用程序没问题。
可以理解,2000行,每行一个图标和文字,太多了!
所以我决定实现一个索引,或者android Market的非常智能的列表(这个列表很棒,没有索引,但只绘制你接近看到的行)。
我想,当设备旋转(带有大列表)时,它会尝试删除引用或类似的东西,这需要很长时间,并且会引发超时,这就是显示黑屏的原因。但这只是一个假设
我试图清理 onPause() 中的列表,但它没有解决问题。
无论如何,问题是:Activity 中的 View 对象过多。我的解决方案:使用索引列表(不要在活动中使用过多的 View 对象)。
希望这对其他人有用。
| 归档时间: |
|
| 查看次数: |
7403 次 |
| 最近记录: |