-2

我的应用程序正在为 Android 2.3.3 到 4.2.2 运行

我想通过旋转显示器来避免重新启动 Activity。我还将清单中的属性添加android:configChanges="orientation|screenSize"到这些Activity. 感谢 LogCat,我可以看到它在旋转设备时onConfigurationChanged()被调用。onCreate()但仅限于更高版本的 Android!在 2.3.3onCreate()之后仍然调用onConfigurationChanged()

我想避免我的应用程序重新启动,因为我在AsyncTask. 我认为这是确保AsyncTask任何时候都不会调用并确保它不会被取消的最简单方法。

您认为这是一个好主意Activity吗,在我的情况下,在配置更改时避免重新启动?对于 Android 2.3.3,我该如何处理?

4

1 回答 1

3

您是否认为这是一个好主意,以避免 Activity 重新启动

并不真地。实际上,android:configChanges不建议使用该属性来处理方向更改,这在 android 文档中明确规定:“应避免使用此属性,并且仅将其用作最后的手段。
不建议这样做的一个原因是因为有其他可能导致重新创建活动的配置更改(除了屏幕方向),我们很可能不会处理所有这些更改。

但是,很少有可能的解决方案可以正确处理这种特殊情况。

  1. 您可以使用 anIntentService而不是AsyncTask. 服务在后台运行,并与活动生命周期解耦,因此您不会受到屏幕方向变化的影响。

  2. 放入AsyncTask一个Fragment. 片段有能力保留它们的实例。

  3. 在任务执行时以编程方式锁定屏幕方向。最简单但不是很建议的方法,因为这会破坏用户体验。

查看此博客文章以获取示例:

于 2013-07-26T08:25:36.097 回答