【发布时间】:2014-12-10 21:59:05
【问题描述】:
我正在尝试实现在片段中运行的 AsyncTaskLoader,但我不知道永远不会调用 onLoadFinished 的确切原因。我不确定我传递的上下文是否正确。
这是基本和自定义的 AsyncTaskLoader:
public static class CustomAsyncLoader extends AsyncTaskLoader<String>
{
public CustomAsyncLoader(Context context) {
super(context);
// do some initializations here
}
@Override
protected void onForceLoad() {
// TODO Auto-generated method stub
super.onForceLoad();
}
@Override
public void deliverResult(String apps) {
}
@Override
protected void onStopLoading() {
// Attempts to cancel the current load task if possible
cancelLoad();
}
@Override
public void onCanceled(String apps) {
super.onCanceled(apps);
}
@Override
public String loadInBackground() {
String result = "";
// ...
// do long running tasks here
// ...
return result;
}
}
在这里,我将向您展示被覆盖的 3 种方法:
@Override
public Loader<String> onCreateLoader(int arg0, Bundle arg1) {
// TODO Auto-generated method stub
return new CustomAsyncLoader(root.getContext());
}
@Override
public void onLoadFinished(Loader<String> arg0, String arg1) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "onLoadFinish", Toast.LENGTH_LONG).show();
}
@Override
public void onLoaderReset(Loader<String> arg0) {
// TODO Auto-generated method stub
}
在我的片段的 onResume 方法中,我调用来初始化加载器:
getLoaderManager().initLoader(0, null, this).forceLoad();
最后要评论的细节是片段如何实现加载器回调:
public class FragmentName extends CustomFragment implements LoaderManager.LoaderCallbacks<String>
让看看是否有人可以帮助我了解如何实施它。提前致谢。
【问题讨论】:
标签: android android-fragments loader