我的应用程序正在运行Android 2.3.3到4.2.2
我希望通过旋转显示来避免重新启动Activity。另外,我在清单中为这些android:configChanges="orientation|screenSize"
添加了属性Activity
。感谢LogCat我可以看到onConfigurationChanged()
在转动设备时被调用onCreate()
。但只有更高版本的Android!
在2.3.3中,在onCreate()
onConfigurationChanged()
我想避免我的应用程序重启,因为我在AsyncTask
下载了一些数据。我认为这是最简单的方法,确保AsyncTask
不会随时调用,并确保它不会被取消。
您是否认为在配置更改时避免Activity
重新启动是一个好主意?我怎么能为Android 2.3.3处理这个?
答案 0 :(得分:3)
您认为避免重启活动
是个好主意吗?
不是真的。实际上,建议不要使用android:configChanges
属性来处理方向更改,这在Android文档中明确指出:“应该避免使用此属性,并且仅作为最后手段使用。 “
不建议这样做的一个原因是因为有其他配置更改(除了屏幕方向)可以产生活动的重新创建,并且很有可能我们不会处理它们。
但是,很少有可能解决这种特殊情况的解决方案。
您可以使用IntentService
代替AsyncTask
。服务在后台运行并与活动生命周期分离,因此您不会受到屏幕方向更改的影响。
将AsyncTask
放入Fragment
。片段可以保留其实例。
在执行任务时以编程方式锁定屏幕方向。最简单但不太明智,因为这会打破用户体验。
查看over this blog post示例: