我有一个 AsyncTask
,它在我的 Main Activity
中被调用 onCreate()
。在同一个 Activity 中,如果方向发生变化,AsyncTask 会再次被调用。如何防止这种情况发生,或者如何重组我的程序以避免这种情况发生?
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pages);
StartProcess sProcess = new StartProcess();
sProcess.execute(this);
}
}
最佳答案
您应该检查Handling Run Time Changes
您可以使用
来处理在配置更改期间保留对象
允许您的 Activity 在配置更改时重新启动,但将有状态对象携带到 Activity 的新实例。
自行处理配置更改
防止系统在某些配置更改期间重新启动您的 Activity,但在配置发生更改时接收回调,以便您可以根据需要手动更新您的 Activity。
在运行时配置更改期间保留对象:
重写onRetainNonConfigurationInstance() 方法以返回您想要保留的对象。
当您的 Activity 再次创建时,调用 getLastNonConfigurationInstance() 来恢复您的对象。
@Override
public Object onRetainNonConfigurationInstance() {
final MyDataObject data = collectMyLoadedData();
return data;
}
在OnCreate中保留;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
if (data == null) {
data = loadMyData();
}
...
}
或者只需将此代码添加到您的 Activity list 中
android:screenOrientation="portrait"
或
android:screenOrientation="landscape"
关于android - 当设备方向改变时 onCreate 方法不断被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8839736/