ContentObserver 라는 것이 있다.
안드로이드 관련 책에서는 ContentProvider의 사용에 대해서만 알려주는데
ContentObserver가 빠진 ContentProvider는 팥없는 찐빵이나 다름 없다.
그러면 ContentObserver 가 뭐하는거냐 하면...
ContentProvider를 사용할때 마다 사용되었음을 알려주는 콜백이다.
먼저 다음과 같은 클래스를 하나 만들고
private class MyContentObserver extends ContentObserver{
.....
public void onChange(boolean selfChange) {
updateFromProvider();//뭔가 변경점이 있을때 마다 처리할 루틴
}
}
import mycontentobserver;
MyContentObserver mObserver = new MyContentObserver();
사용할 Activity의 OnCreate 쯤에
mObserver = new MyContentObserver();
getContentResolver().registerContentObserver(XXX.CONTENT_URI,true,mObserver);
해주면 된다.
그러면 해당 ACTIVITY가 살아 있는동안 CONTENT_URI에 해당하는 작업이 발생하면 updateFromProvider()가 호출 될 것이다.
OnDestroy 에는 다음과 같이 등록 해제 코드 넣어주는것을 잊지 않는다.
getContentResolver().unregisterContentObserver(mObserver);
등록할때 두번째 인자가 false 이면 CONTENT_URI가 정확하게 일치 하는경우에만 호출 된다.
등록에 사용한 CONTENT_URI가 content://aaa.bbb.ccc/ddd 일때
getContentProvider.update( content://aaa.bbb.ccc/ddd/1 , values) 가 호출되면
true 일때는 updateFromProvider가 호출 되고 false면 호출 되지 않는다.
서비스를 만들때 등록해서 사용하면 좋다.
댓글 없음:
댓글 쓰기