【发布时间】:2011-01-03 11:22:57
【问题描述】:
我已经被这个问题困扰了一段时间。当我有单独的 Thread / AsyncTask 运行时,如何正确处理屏幕方向更改?目前,我有
android:configChanges="orientation|keyboard|keyboardHidden"
在我的AndroidManifest.xml,但那是not really encouraged:
注意:应避免使用此属性,并且仅将其用作最后的手段。有关如何正确处理由于配置更改而重新启动的更多信息,请阅读处理运行时更改。
另外,在 2.3 模拟器中,切换到 landscape 时它可以工作,但切换回 portrait 时会失败。
现在,我使用configChanges 的原因是因为当用户切换方向时,我可能会运行AsyncTask,处理一些网络流量,我不希望它停止。
有没有其他方法可以做到这一点,或者有没有办法修复 2.3 以切换回纵向?
我知道 onRetainNonConfigurationInstance,但我不确定“保存”AsyncTask 实例是否是个好主意,主要是因为扩展 AsyncTask 的类不是静态的(因此它与Activity) -- 它必须是,因为在 onPostExecute() 中它调用来自 Activity 实例的方法。
【问题讨论】: