fkm blog

software開発に関することを書いていきます

AndroidのLoaderのソースを読む(0)

イマイチ説明不足感の強いAndroidのLoaderのソースを読んでみよう(提案)

Loaderを使う時は、LoaderManagerのメソッドを呼ぶところからなので, そこから読んでみる. なんとなくでsupport-v4の実装を読んでみる.

public abstract class LoaderManager {
  public abstract <D> Loader<D> initLoader(int id, Bundle args,
      LoaderManager.LoaderCallbacks<D> callback);
}

ぬ, abstract classだったのか. getSupportLoaderManager()からたどる.

public class FragmentActivity extends Activity {
  public LoaderManager getSupportLoaderManager() {
    if (mLoaderManager != null) {
      return mLoaderManager;
    }
    mCheckedForLoaderManager = true;
    mLoaderManager = getLoaderManager("(root)", mLoadersStarted, true);
    return mLoaderManager;
  }
}

getLoaderManager()では何やってるんだ?

public class FragmentActivity extends Activity {
  LoaderManagerImpl getLoaderManager(String who, boolean started, boolean create) {
    if (mAllLoaderManagers == null) {
      mAllLoaderManagers = new SimpleArrayMap<String, LoaderManagerImpl>();
    }
    LoaderManagerImpl lm = mAllLoaderManagers.get(who);
    if (lm == null) {
      if (create) {
        lm = new LoaderManagerImpl(who, this, started);
        mAllLoaderManagers.put(who, lm);
      }
    } else {
      lm.updateActivity(this);
    }
    return lm;
  }
}

所有者指定で, なければ作る(フラグによっては作らない). LoaderManagerImplが本丸か?

次はLoaderManagerImplを読むか