반응형
출처 - http://aroundck.tistory.com/129
안녕하세요 돼지왕왕돼지입니다.
오늘은 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 도 함께 보낼 수 있으면 참 좋을텐데 말이죠...
자, 유용하게 사용하시길..
반응형
'개발 > 안드로이드' 카테고리의 다른 글
오픈 소스 라이브러리 쉽게 배포하기 - JitPack (0) | 2017.03.28 |
---|---|
WebView Session 초기화 (0) | 2017.02.20 |
ViewTreeObserver - 뷰의 위치, 레이아웃 그려지는 시점 알아내기 (0) | 2017.01.31 |
android CustomView 생성하기 (0) | 2017.01.31 |
커스텀 뷰 만들기 (0) | 2016.12.28 |
댓글