
AsyncTaskLoader | Android Developers
目次
1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する
7. データベースと CursorLoader
CursorLoader は ContentProviders 照会専用のローダです
結果としてデータベースカーソルを返す。
AsyncTaskLoaderを継承したバックグランドスレッドでデータベースクエリーを実行します。
Acitivityのライフサイクルに応じて、Activity.startManagingCursor(Cursor c) やカーソルのライフサイクルの管理を置き換えます。
→ close() は呼ばない。
データベースを監視し、データが変更された新しいカーソルを返します。
→ requery() は呼ばない。
ListFragment内 CursorAdapterでの使い方
@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    return new BookmarksLoader(getActivity(), 
        args.getDouble("latitude"), args.getDouble("longitude")); 
}
@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    adapter.swapCursor(data); 
    // The list should now be shown. 
    if (isResumed()) { 
        setListShown(true); 
    } else { 
        setListShownNoAnimation(true); 
    } 
}
@Override 
public void onLoaderReset(Loader<Cursor> loader) { 
    adapter.swapCursor(null); 
}