반응형
안녕하세요 돼지왕왕돼지입니다.
오늘은 ContentObserver 라는 녀석이 뭐 하는 녀석인지 함께 알아봅시다.
ContentObserver 넌 누구냐?
ContentObserver 는 해당 URI 를 Observe 하다가, 변경이 생기면 알려주는 놈입니다.
Observer 사용 방법을 알려주세요.
Observer 를 등록하는 방법은 다음과 같습니다.
ContentResolver cr = getContentResolver();
ContentObserver contentObserver = new ContentObserver( new Handler() ){
public void onChange( boolean selfChange ){
super.onChange( selfChange );
// do sth..
}
};
cr.registerContentObserver( URI, true, contentObserver );
두번째 라인의 handler 는 URI 변경시에 호출이 됩니다. 즉 handler 를 넣어주면 그 handler 안에서 onChange 가 호출되는 것입니다.
Developer 를 통해 registerContentObserver() 의 API Doc을 살펴봤습니다.
- URI 는 observe 할 URI
public final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer )
- boolean 값은 해당 URI 만 할 것인지, URI 자손의 변화까지 감지할것인가.
- 세번째는 변경되었을 때 호출될 Observer.
Register 하는 곳이 있으면 unregister 하는 것을 잊어서는 안되죠?
onDestroy() 나 onPause() 등에 꼭 등록해놓읍시다.
아닙니다. Content Provider에서 DB가 수정되는 부분에 아래와 같은 코드가 추가되어야 합니다.
public final void unregisterContentObserver ( ContentObserver observer )
onDestroy() 나 onPause() 등에 꼭 등록해놓읍시다.
Observer 만 등록하면 만사 오케이인가요?
getContext().getContentResolver().notifyChange( uri, null );
개인적으로 onChanged() 가 불릴 때, 어떤 내용이 바뀌었는지 Message 도 함께 보낼 수 있으면 참 좋을텐데 말이죠...
자, 유용하게 사용하시길..
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android/안드로이드] aidl 을 이용하여 service 에 bind 하기. (2) | 2012.02.08 |
---|---|
[android/안드로이드] activity chooser? activity selector? (0) | 2012.02.07 |
[android/안드로이드] Android requires .class compatibility set to 5.0. Please fix project properties. 해결방법 (0) | 2012.02.07 |
[android/안드로이드] boot.img 와 system.img 의 정체 (0) | 2012.02.07 |
[android/안드로이드] managedQuery 와 일반 query 의 차이점 (0) | 2012.02.07 |
댓글