对于一个大学项目,我需要开发一个Android应用程序,该应用程序从API检索JSON数据并将其显示在RecyclerView中。应用程序要求之一是,更改屏幕方向后不应重新执行Asynctask。换句话说,一旦执行了Asynctask并在RecyclerView中显示了检索到的数据,则在旋转屏幕后不必再次检索数据。
出于演示目的,我在onPostExecute方法中添加了一个烤面包,该烤面包显示了已显示的项目数量:
如您所见,旋转屏幕后,烤面包重新出现,这意味着Asynctask已重新执行。我想防止这种情况的发生,但是我不知道怎么办。
答案 0 :(得分:0)
尝试将此行添加到清单文件的活动标签中。
<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/>
编写此参数时,您不想处理任何活动,但Android会处理。它将保持活动的现有状态。
如果将不同的布局文件用于横向,则此方法将破坏您的布局,因此您可以遵循一些替代方法来保持状态。
在您的活动中覆盖onSaveInstanceState
方法,并在Bundle
中添加一些参数
protected void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
bundle.putLong("param", value);
}
并恢复onCreate
中的值,以确保状态已创建。
public void onCreate(Bundle bundle) {
if (bundle != null){
value = bundle.getLong("param");
}
}