屏幕旋转时如何使用 AsyncTask
How to work with AsyncTask when screen rotates
我的 android 应用中有一个 activity 在 onCreateView()
上调用 asynctask
这是我的代码:
@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());
}
所以我再次回忆起恢复数据的异步任务,我的问题是 activity 运行 在旋转时再次调用并且它调用 onRestoreInstanceState 所以我如何防止 activity 从调用第一个异步任务?
换句话说,当屏幕旋转时存储异步任务返回的数据的最佳解决方案是什么?
在您的AndroidManifest.xml
中添加以下内容以防止在方向改变时重新加载activity
android:configChanges="orientation|screenSize"
所以,你会得到这样的东西:
<activity android:name="Activity"
android:configChanges="orientation|screenSize">
</activity>
希望有用!
我建议您确保您确实需要 activity 在屏幕旋转时重置(默认行为)。每次我遇到旋转问题时,我都会将此属性添加到我在 AndroidManifest.xml 中的标记中,并且一切正常。
android:configChanges="keyboardHidden|orientation"
来源How to handle an AsyncTask during Screen Rotation?
我的 android 应用中有一个 activity 在 onCreateView()
asynctask
这是我的代码:
@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());
}
所以我再次回忆起恢复数据的异步任务,我的问题是 activity 运行 在旋转时再次调用并且它调用 onRestoreInstanceState 所以我如何防止 activity 从调用第一个异步任务?
换句话说,当屏幕旋转时存储异步任务返回的数据的最佳解决方案是什么?
在您的AndroidManifest.xml
中添加以下内容以防止在方向改变时重新加载activity
android:configChanges="orientation|screenSize"
所以,你会得到这样的东西:
<activity android:name="Activity"
android:configChanges="orientation|screenSize">
</activity>
希望有用!
我建议您确保您确实需要 activity 在屏幕旋转时重置(默认行为)。每次我遇到旋转问题时,我都会将此属性添加到我在 AndroidManifest.xml 中的标记中,并且一切正常。
android:configChanges="keyboardHidden|orientation"
来源How to handle an AsyncTask during Screen Rotation?