如果加载器已经存在,initLoader会做什么?

时间:2017-07-09 11:51:07

标签: android

在developers.android.com上,它说, “确保加载器已初始化并处于活动状态。如果加载器尚不存在,则创建一个加载器(如果活动/片段当前已启动),则启动加载器。否则,将重新使用上次创建的加载器。”

那么最后创建的加载器的重用是什么意思呢? 如果加载程序已经存在,它会在initLoader()之后立即调用哪个方法?

我问这个是因为我还不确定缓存如何与Loaders一起使用。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getSupportLoaderManager().initLoader(loaderId, null, MainActivity.this);
}

public Loader<String[]> onCreateLoader(int id, final Bundle loaderArgs) {

    return new AsyncTaskLoader<String[]>(this) {

        String[] mCachedData = null;

        @Override
        protected void onStartLoading() {
            if (mCachedData != null) {
                deliverResult(mCachedData);
            } else {
                forceLoad();
            }
        }

 . . . . .

}

在上面的代码中,如果加载器已经存在,那么流程是什么?在initLoader之后它接下来调用它的方法是什么。因为如果它调用onCreateLoader,那么我的缓存数据将再次初始化为null。

1 个答案:

答案 0 :(得分:0)

如果检查LoaderManager源initLoader仅在具有相同ID的加载器不存在时才创建加载器。

  

如果加载器,它会在initLoader()之后立即调用哪个方法   已经存在?

它告诉加载程序仅在加载程序已完成其作业时才调用onLoadFinish。检查this)。
如果加载器尚未完成其工作,则加载器本身将在完成后调用onLoadFinish