2010년 1월 12일 화요일

괜찮은 기능 ContentObserver

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면 호출 되지 않는다.

 

서비스를 만들때 등록해서 사용하면 좋다.

댓글 없음:

댓글 쓰기