Android AsyncTaskLoader不';t调用onload完成

Android AsyncTaskLoader不';t调用onload完成,android,orientation,asynctaskloader,Android,Orientation,Asynctaskloader,我对AsyncTaskLoader有问题。当应用程序启动时,它工作正常。然后我打电话给RefreshStarted,一切都很好。但如果更改方向,AsyncTaskLoader开始处理loadInBackground,但永远不会调用onLoadFinished。怎么了 这里是简化的夏洛克片段: public class MyFragment extends SherlockFragment implements LoaderCallbacks<Object> { PullTo

我对
AsyncTaskLoader
有问题。当应用程序启动时,它工作正常。然后我打电话给RefreshStarted,一切都很好。但如果更改方向,
AsyncTaskLoader
开始处理
loadInBackground
,但永远不会调用
onLoadFinished
。怎么了

这里是简化的夏洛克片段:

public class MyFragment extends SherlockFragment implements LoaderCallbacks<Object> {

    PullToRefreshLayout Rl;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        if (Rl == null) {
            Rl = (PullToRefreshLayout) inflater.inflate(
                R.layout.friends_fragment_rpc, null);
            getData();
        } else {
            ViewGroup parent = (ViewGroup) Rl.getParent();
            parent.removeView(Rl);
            getData();
        }
        setRetainInstance(true);
        return Rl;
    }

    private void getData() {
        loaderBndl = new Bundle();
        loaderBndl.putString(RequestLoader.ARGS_URL, url);

        getActivity().getLoaderManager().initLoader(LOADER_ID, loaderBndl, this)
                .forceLoad();
    }

    @Override
    public Loader<Object> onCreateLoader(int id, Bundle args) {
        Loader<Object> loader = null;
        if (id == LOADER_ID) {
            loader = new RequestLoader(getActivity(), args);
        }
        return loader;
    }

    @Override
    public void onLoadFinished(Loader<Object> loader, Object result) {
        Log.d(TAG, "onLoadFinished");
    }

    @Override
    public void onRefreshStarted(View view) {
        getData();
    }
}
public class RequestLoader extends AsyncTaskLoader<Object> {
    public RequestLoader(Context context, Bundle args) {
        super(context);
        if (isDebug)
            Log.d(TAG, "create RequestLoader");
        ...
    }

    @Override
    public Object loadInBackground() {
        if (isDebug)
            Log.d(TAG, "loadInBackground");

        Object requestResult = null;
        ...
        return requestResult;
     }
}
公共类MyFragment扩展SherlockFragment实现LoaderCallbacks{
PullToRefresh布局Rl;
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
if(Rl==null){
Rl=(PullToRefreshLayout)充气器。充气(
R.layout.friends\u fragment\u rpc,null);
getData();
}否则{
ViewGroup parent=(ViewGroup)Rl.getParent();
parent.removeView(Rl);
getData();
}
setRetainInstance(真);
返回Rl;
}
私有void getData(){
loaderBndl=新捆绑包();
loaderBndl.putString(RequestLoader.ARGS_URL,URL);
getActivity().getLoaderManager().initLoader(LOADER_ID,loaderBndl,this)
.forceLoad();
}
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
Loader=null;
if(id==LOADER\u id){
loader=newrequestloader(getActivity(),args);
}
返回装载机;
}
@凌驾
public void onLoadFinished(加载器,对象结果){
Log.d(标记“onLoadFinished”);
}
@凌驾
公共void onRefreshStarted(视图){
getData();
}
}
和AsyncTaskLoader:

public class MyFragment extends SherlockFragment implements LoaderCallbacks<Object> {

    PullToRefreshLayout Rl;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        if (Rl == null) {
            Rl = (PullToRefreshLayout) inflater.inflate(
                R.layout.friends_fragment_rpc, null);
            getData();
        } else {
            ViewGroup parent = (ViewGroup) Rl.getParent();
            parent.removeView(Rl);
            getData();
        }
        setRetainInstance(true);
        return Rl;
    }

    private void getData() {
        loaderBndl = new Bundle();
        loaderBndl.putString(RequestLoader.ARGS_URL, url);

        getActivity().getLoaderManager().initLoader(LOADER_ID, loaderBndl, this)
                .forceLoad();
    }

    @Override
    public Loader<Object> onCreateLoader(int id, Bundle args) {
        Loader<Object> loader = null;
        if (id == LOADER_ID) {
            loader = new RequestLoader(getActivity(), args);
        }
        return loader;
    }

    @Override
    public void onLoadFinished(Loader<Object> loader, Object result) {
        Log.d(TAG, "onLoadFinished");
    }

    @Override
    public void onRefreshStarted(View view) {
        getData();
    }
}
public class RequestLoader extends AsyncTaskLoader<Object> {
    public RequestLoader(Context context, Bundle args) {
        super(context);
        if (isDebug)
            Log.d(TAG, "create RequestLoader");
        ...
    }

    @Override
    public Object loadInBackground() {
        if (isDebug)
            Log.d(TAG, "loadInBackground");

        Object requestResult = null;
        ...
        return requestResult;
     }
}
公共类RequestLoader扩展了AsyncTaskLoader{
公共请求加载器(上下文、绑定参数){
超级(上下文);
if(isDebug)
Log.d(标记“createrequestloader”);
...
}
@凌驾
公共对象loadInBackground(){
if(isDebug)
日志d(标签“装载背景”);
objectrequestresult=null;
...
返回请求结果;
}
}

问题已解决-夏洛克片段应使用SupportLoaderManager