阻止背景活动在orientationchange上被销毁

时间:2014-04-02 16:06:25

标签: android android-activity android-orientation

所以我有一个Activity来处理我所有的web服务调用。每当活动需要来自互联网的信息时,我就会启动它,并在为用户显示加载器的同时运行下载代码。

我的问题是,如果用户更改方向(纵向到横向,反之亦然),请求下载的活动将被销毁并重新创建(与我假设的后台堆中的任何其他活动一样)。 我已经将android:configChanges =“orientation | screenSize”添加到我的loading-activity中,忽略了loading-activity的方向变化,但首先它似乎无法工作(方向改变了吗?),调用活动也是销毁并重新创建(使其开始新的加载活动请求结果)。

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

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

<activity
android:name=".LoadingActivity"
android:theme="@style/LoadingTheme"
android:configChanges="orientation|screenSize" >

我的活动(LoadingActivity)已覆盖:

 @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
      //ignore orientation change 
     Log.d("LoadingActivity","Ignoring config change");
      super.onConfigurationChanged(newConfig); 
    } 

我注意到LoadingActiviy实际上并没有被破坏,只有Backstack中的其他活动。

我通过使用名为WaitingForResults的LoadingActivity在所有活动中创建布尔值来解决它,这种方式在创建活动时,如果它是真的我不再进行另一次调用以从服务器检索数据(因为LoadingActivity会正确地将结果传递给重新创建的活动)。

1 个答案:

答案 0 :(得分:1)

如果您已在清单中指定将处理orientationChanges,并且您不希望活动经历常规生命周期,那么您似乎缺少的是在您的活动中覆盖此方法,如下所示:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(null);
}

希望它有帮助!

问候!