我的Android应用中有一项活动,在asynctask
onCreateView()
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weeklyprofit);
fromDateTxt=(TextView)findViewById(R.id.fromDate);
toDateTxt = (TextView)findViewById(R.id.toDate);
GetXYPoints getXY = new GetXYPoints();
getXY.execute(fromDateTxt.getText().toString(),toDateTxt.getText().toString());
}
现在我的应用程序需要旋转,所以我需要在旋转时存储数据:
我已经实现了如下:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("from", fromDateTxt.getText().toString());
savedInstanceState.putString("to", toDateTxt.getText().toString());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
SystemClock.sleep(500);
fromDateTxt.setText(savedInstanceState.getString("from"));
toDateTxt.setText(savedInstanceState.getString("to"));
GetXYPoints getXY = new GetXYPoints();
getXY.execute(fromDateTxt.getText().toString(),toDateTxt.getText().toString());
}
所以我再次使用恢复的数据回忆起asynctask,我的问题是当旋转时活动再次运行并且它调用onRestoreInstanceState,那么我怎么能阻止活动调用第一个asyncktask?
换句话说,当屏幕旋转时,存储asynck任务返回的数据的最佳解决方案是什么?
答案 0 :(得分:2)
我建议你确保你确实需要在屏幕旋转时重置你的活动(默认行为)。每次我遇到轮换问题时,我都会在AndroidManifest.xml中将此属性添加到我的代码中,并且很好。
机器人:configChanges =" keyboardHidden |取向"
答案 1 :(得分:1)
在AndroidManifest.xml
添加以下内容,以防止在方向更改时重新加载活动
android:configChanges="orientation|screenSize"
所以,你会有这样的事情:
<activity android:name="Activity"
android:configChanges="orientation|screenSize">
</activity>
希望它有效!