Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 加载程序并非始终启动onLoadFinished回调_Android_Loader_Asynctaskloader - Fatal编程技术网

Android 加载程序并非始终启动onLoadFinished回调

Android 加载程序并非始终启动onLoadFinished回调,android,loader,asynctaskloader,Android,Loader,Asynctaskloader,我正在使用AsyncTaskLoader从web api获取数据,但由于某种原因,装载程序并没有总是启动onLoadFinished回调 这是我片段中的snippt,我是如何使用加载程序的。我总是重新启动loader restartLoader(…).forceload()以更新结果。加载程序基于用户交互触发 private void getData() { Bundle bundle = new Bundle(); bundle.putParcelable("userInput

我正在使用AsyncTaskLoader从web api获取数据,但由于某种原因,装载程序并没有总是启动onLoadFinished回调

这是我片段中的snippt,我是如何使用加载程序的。我总是重新启动loader restartLoader(…).forceload()以更新结果。加载程序基于用户交互触发

private void getData() {
    Bundle bundle = new Bundle();
    bundle.putParcelable("userInput", mUserInputData);
    getLoaderManager().restartLoader(CARS_LOADER_ID, bundle, carsLoaderListener).forceLoad();
}


private LoaderManager.LoaderCallbacks<List<Car>> carsLoaderListener = new LoaderManager.LoaderCallbacks<List<Car>>()
{
    @Override
    public Loader<List<Car>> onCreateLoader(int id, Bundle args)
    {;
        return new CarsLoader(getActivity(), (UserInput)args.get("userInput"));
    }

    @Override
    public void onLoadFinished(Loader<List<Car>> loader, List<Car> data)
    {
        // This is not allways get called
        setData(data);
    }

    @Override
    public void onLoaderReset(Loader<List<Car>> loader)
    {
    }
};
private void getData(){
Bundle=新Bundle();
bundle.putParcelable(“用户输入”,mUserInputData);
getLoaderManager();
}
私有LoaderManager.LoaderCallbacks carsLoaderListener=新LoaderManager.LoaderCallbacks()
{
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args)
{;
返回新的CarsLoader(getActivity(),(UserInput)args.get(“UserInput”);
}
@凌驾
public void onLoadFinished(加载程序,列表数据)
{
//这不是所有人都能打电话的地方
setData(数据);
}
@凌驾
公共void onLoaderReset(加载器)
{
}
};

即使加载程序已经在运行,也可以像这样重新启动它吗?这会导致装载机卡住吗?有时加载程序启动正常并且正在工作,但它启动onLoadFinished回调。当加载程序像这样被阻塞时,重新启动片段/关闭应用程序可以解决问题。

我也遇到过这种问题。我不确定它在
LoaderManager.RestartLoader
中的bug是否对我有用,除了
getLoaderManager().destroyLoader(Loader_id)
getLoaderManager().initLoader()
之外


希望这有帮助。

我也遇到过这种问题。我不确定它在
LoaderManager.RestartLoader
中的bug是否对我有用,除了
getLoaderManager().destroyLoader(Loader_id)
getLoaderManager().initLoader()
之外


希望这有帮助。

谢谢!看起来可能会有帮助。不过需要做更多的测试。还是很奇怪的问题,我想是LoaderManager中的bug…谢谢!看起来可能会有帮助。不过需要做更多的测试。还是很奇怪的问题,我想是LoaderManager中的bug。。。