所以我有一个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会正确地将结果传递给重新创建的活动)。
答案 0 :(得分:1)
如果您已在清单中指定将处理orientationChanges,并且您不希望活动经历常规生命周期,那么您似乎缺少的是在您的活动中覆盖此方法,如下所示:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(null);
}
希望它有帮助!
问候!