오늘은 managedQuery 와 일반 query의 차이점에 대해 알아보고자 합니다.
내용은 매우 simple 합니다~
managedQuery() = ContentResolver.query() + startManagingCursor( Cursor ) 입니다.
여기서 startManagingCursor( Cursor ) 가 하는 일은,
activity가 pause 될 때, 이 cursor에 deactivate() 작업을 해주어 메모리 손실을 줄여주고,
activity가 resume 될 때, requery() 를 해주어 원래의 내용이 들어가도록 해주는 것이죠.
activity가 destroy될 때는 마찬가지로 close() 까지 해주는 좋은 manager입니다.
한번 쿼리를 한 이후로 query 내용 변동 없이 액티비티가 사용되는 동안 계속 쓰이는 커서는 managedQuery를 쓰면되고,
한번 쿼리한후 더이상 쓸필요가 없는 경우 또는 query 내용이 계속 변경되는 경우는 일반 query를 쓰시면 되겠습니다.
여기서 일반 쿼리라 하면.. ContentResolver.query() 입니다.
위에서 설명했듯 managedQuery 는 일반쿼리와 startManagingCursor 입니다.
startManagingCursor( cursor ) 의 param으로 일반쿼리 결과 cursor 를 넣어주면 managedQuery 와 똑같은 효과를 얻을 수 있습니다.
startManagingCursor 의 내용에서 알 수 있듯, 이 함수는 activity 에서 제공합니다. 그러니 activity 와 생명주기를 함께 하겠지요?
위에서 설명했듯 managedQuery 는 일반쿼리와 startManagingCursor 입니다.
startManagingCursor( cursor ) 의 param으로 일반쿼리 결과 cursor 를 넣어주면 managedQuery 와 똑같은 효과를 얻을 수 있습니다.
startManagingCursor 의 내용에서 알 수 있듯, 이 함수는 activity 에서 제공합니다. 그러니 activity 와 생명주기를 함께 하겠지요?