2011-02-02 119 views
3

我正在开发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} 

我不知道为什么会发生。 感谢您的意见,建议,答案。

+2

你可以发布你的`onCreate`&`onResume`吗? – xil3 2011-02-02 14:02:26

+3

如果活动一开始就正常启动,然后在方向更改后冻结,它也可能是活动拆卸中的某些内容。如果你有它们,看到`onPause`或其他'生命周期结束'方法可能是有用的。 – 2011-02-02 14:13:18

回答

3

感谢您的意见,对于迟到的答案感到抱歉。

问题是我的应用程序中有一个很大很大的列表(在ListView中接近2000行)。如果我没有绘制这个列表,那么应用程序就没问题。

可以理解的是,2000行,每一个图标和文字都太多了!

所以我决定实现一个索引,或者非常智能的Android Market列表(这个列表很棒,没有编入索引,但只画出你近距离看到的行)。

我想,当设备旋转(与大列表)它试图删除引用,或类似的东西,这需要很长的时间,并引发超时,这是什么显示黑色屏幕。但它只是一个假设

我试图清理onPause()中的列表,但它不能解决问题。

无论如何,问题是:太多查看活动中的对象。 对我来说这个解决方案:使用索引列表(不要在很多View对象中使用Activity)。

希望这对其他人有用。