Java 屏幕旋转时如何使用装载机

Java 屏幕旋转时如何使用装载机,java,android,Java,Android,我尝试使用加载程序代替异步任务。我不知道如何在屏幕旋转时正确组织保护状态。我从Json接收信息并尝试创建列表 public class FragmentWeatherTestApplication extends Fragment implements LoaderManager.LoaderCallbacks<List<WeatherItem>> { @Override public void onCreate(Bundle savedInstanceS

我尝试使用加载程序代替异步任务。我不知道如何在屏幕旋转时正确组织保护状态。我从Json接收信息并尝试创建列表

public class FragmentWeatherTestApplication extends Fragment
        implements LoaderManager.LoaderCallbacks<List<WeatherItem>> {
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    getLoaderManager().initLoader(0,null,this).forceLoad();
}

 ...

@Override
public Loader<List<WeatherItem>> onCreateLoader(int id, Bundle args) {
    Log.i(TAG, "onCreateLoader");
    return new FetchWeatherLoader(getActivity());
}

@Override
public void onLoadFinished(Loader<List<WeatherItem>> loader, List<WeatherItem> data) {
    Log.i(TAG, "onLoadFinished");
    mItems = data;
    setupAdapter();
}

@Override
public void onLoaderReset(Loader<List<WeatherItem>> loader) {
    Log.i(TAG, "onLoaderReset");
}

   .... 


  private static class FetchWeatherLoader extends AsyncTaskLoader<List<WeatherItem>>{

    public FetchWeatherLoader(Context context) {
        super(context);
    }

    @Override
    public List<WeatherItem> loadInBackground() {
        return new OpenWeatherFetch().fetchItems();
    }
}
公共类碎片WeatherTestApplication扩展了碎片
实现LoaderManager.LoaderCallbacks{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getLoaderManager().initLoader(0,null,this.forceLoad();
}
...
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
Log.i(标记“onCreateLoader”);
返回新的FetchWeatherLoader(getActivity());
}
@凌驾
public void onLoadFinished(加载程序,列表数据){
Log.i(标记“onLoadFinished”);
mItems=数据;
setupAdapter();
}
@凌驾
公共void onLoaderReset(加载器){
Log.i(标记“onLoaderReset”);
}
.... 
私有静态类FetchWeatherLoader扩展了AsyncTaskLoader{
公共FetchWeatherLoader(上下文){
超级(上下文);
}
@凌驾
公共列表加载背景(){
返回新的OpenWeatherFetch().fetchItems();
}
}

我建议看一下这个博客。你所说的对话状态是什么意思?当sceen是rotate时加载程序加载数据,但我希望只有当应用程序启动GetLoaderManager()时才会这样做。initLoader(0,null,this)。forceLoad();在您启动应用程序时使用此选项bryknaval,我这样做了,但是加载程序再次从Json加载数据,如何避免?