7つのローダーをロードする必要があるフラグメントがあります
onActivityCreate(); で
私はそれらすべてに対して initLoader を呼び出します。
public void onActivityCreate(Bundle saveInstanceState){
LoaderManager mgr = getLoaderManager();
mgr.initLoader(0,null,mLoaderCallback0);
mgr.initLoader(1,null,mLoaderCallback1);
mgr.initLoader(2,null,mLoaderCallback2);
mgr.initLoader(3,null,mLoaderCallback3);
mgr.initLoader(4,null,mLoaderCallback4);
mgr.initLoader(5,null,mLoaderCallback5);
mgr.initLoader(6,null,mLoaderCallback6);
}
メモリの問題のために、それらを1つずつ効率的にロードするにはどうすればよいですか?
私が考えていたこと
onActivityCreated
メソッドで最初のローダーをonLoadFinished
ロードし、そのコールバック内で2番目のローダーをロードし、2番目onLoadFinished
でinitLoader
3番目などをロードします。いいですか?または、フラグメントのライフサイクルに関して何かが恋しいです。
private LoaderCallbacks<UserFriendResponse> mFirstCallbacks = new LoaderCallbacks<UserFriendResponse>() {
@Override
public void onLoaderReset(Loader<UserFriendResponse> arg0) {
// TODO Auto-generated method stub
}
@Override
public void onLoadFinished(Loader<Type1> arg0,
Type1 arg1) {
....
...
..
if(isAdded()){
getLoaderManager().initLoader(1,null,mLoaderCallback1);
}
}
@Override
public Loader<Type1> onCreateLoader(int arg0, Bundle arg1) {
return new CustomLoader(getActivity(), false, true, false, "1",
1, username);
}
};
注: 各ローダーが異なるデータ型を返すため、コールバックを 1 つ持つことはできません。