본문 바로가기

프로그래밍/안드로이드

[안드로이드 ContentObserver] 스크랩 자료

출처 : http://rainfarm-textcube.blogspot.com/2010/01/%EA%B4%9C%EC%B0%AE%EC%9D%80-%EA%B8%B0%EB%8A%A5-contentobserver.html

위에 가보시면 있습니다. 
j혹시나 지워질까 내용도 붙여 넣습니다. 문제가 된다면 삭제 하도록 하겠습니다.

 

괜찮은 기능 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면 호출 되지 않는다.

 

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

출처 : http://rainfarm-textcube.blogspot.com/2010/01/%EA%B4%9C%EC%B0%AE%EC%9D%80-%EA%B8%B0%EB%8A%A5-contentobserver.html