http://developer.android.com/guide/topics/fundamentals/loaders.html
- Activity 의 onCreate() 나 Fragment 의 onActivityCreated() 함수에서 다음과 같이 loader 를 초기화합니다.
// start new one or reconnect existing one.
getLoaderManager().initLoader(0, null, this); // id, constructor, callback
- id 가 이미 존재하는 녀석이면, 기존에 생성한 녀석을 재사용한다. 만약 id 가 존재하지 않는 녀석이라면, LoaderCallbacks 의 onCreateLoader() 를 호출하며, 새로 생성한다.
- 만약 기존의 녀석을 재사용하는데, 기존 녀석이 이미 데이터를 받아온 상태라면 바로 onLoadFinished 가 호출된다.
- 기존에 존재하는 loader 를 버리려면 restartLoader() 를 호출. Loader 는 기존에 받아논 data 를 유지한다.
- LoaderCallbacks
onCreateLoader() 에서 주로 Loader 를 만든다.
onLoadFinished() 는 data load 가 끝나는 순간 불리며, 이 시점에는 old data 가 살아있지만, 이녀석이 return 되는 순간 이전 data 는 날아가고, 새 data 가 들어온다. 이 부분을 주의해야 한다.
onLoaderReset() 은 loader 의 기존 data 가 reset 될 때 불리기 때문에 기존 data 를 refer 하여 사용하던 link 를 끊어 주어야 한다.
- loader 는 자동으로 data 를 더 이상 사용하지 않으면 release 하기 때문에 CursorLoader 를 사용하는 경우 해당 cursor 에 대해 close() 를 부르면 안된다. CursorAdapter 를 사용하는 경우에는 swapCursor() 를 써서 이전 Cursor 가 close. 되지 않도록 해줘야 한다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Messenger 를 이용한 IPC.( Service binding ) (12) | 2012.05.21 |
---|---|
[Android/안드로이드] Task & Back Stack. (0) | 2012.05.21 |
[Android/안드로이드] Fragment 에 대하여. (7) | 2012.05.18 |
[Android/안드로이드] Activity 생명주기 관련된 고급정보들. (0) | 2012.05.17 |
[Android/안드로이드] Android Application 기본에서 놓치기 쉬운 고급정보들. (0) | 2012.05.17 |
댓글