Android 停止在OrientionChange上销毁后台活动

Android 停止在OrientionChange上销毁后台活动,android,android-activity,android-orientation,Android,Android Activity,Android Orientation,所以我有一个活动来处理我所有的web服务调用。每当活动需要来自internet的信息时,我启动它,它运行下载代码,同时为用户显示加载程序 我的问题是,如果用户改变方向(从纵向到横向,反之亦然),则请求下载的活动将被销毁并重新创建(我假设后台的任何其他活动也是如此)。 我在我的加载活动中添加了android:configChanges=“orientation | screenSize”以忽略加载活动的方向更改,但首先它似乎不起作用(方向是否会更改?),调用活动也会被销毁并重新创建(导致它启动一个

所以我有一个活动来处理我所有的web服务调用。每当活动需要来自internet的信息时,我启动它,它运行下载代码,同时为用户显示加载程序

我的问题是,如果用户改变方向(从纵向到横向,反之亦然),则请求下载的活动将被销毁并重新创建(我假设后台的任何其他活动也是如此)。 我在我的加载活动中添加了android:configChanges=“orientation | screenSize”以忽略加载活动的方向更改,但首先它似乎不起作用(方向是否会更改?),调用活动也会被销毁并重新创建(导致它启动一个新的加载活动,请求结果)

我想要实现的是在加载活动处于活动状态时停止任何方向更改

编辑: 我在清单中的活动:

<activity
android:name=".LoadingActivity"
android:theme="@style/LoadingTheme"
android:configChanges="orientation|screenSize" >
我注意到加载活动实际上并没有被破坏,而只是后台的其他活动


我通过在所有活动中使用LoadingActivity创建一个名为WaitingForResults的布尔值来解决这个问题,这样在创建活动时,如果它为真,我就不会再次调用从服务器检索数据(因为LoadingActivity将正确地将结果传递给重新创建的活动).

如果您已经在清单中指定您将处理方向更改,并且您不希望活动经历正常的生命周期,那么您所缺少的似乎就是在活动中重写此方法,如下所示:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(null);
}
希望有帮助


问候

要在针对较新的Android版本时完全隔离所有更改,您需要在configChanges行中添加keyboardHidden。也许将web服务调用移动到
IntentService
会更好。您只处理2个配置更改,但还有许多其他更改(例如,如果您的应用程序使用特定于语言的资源,那么如果用户在web服务调用期间更改系统语言,您将面临相同的销毁/创建活动问题)。请将您的答案标记为正确,因为正如我在“我的编辑”中所述,它实际上适用于我正确设置清单的活动。我的问题是后堆栈中的活动(需要在方向更改时更改方向,而不是进行更多调用以检索服务器数据)。
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(null);
}