연락처 데이터에 변경 사항이 발생할 때이를 감지 할 수 있어야합니다 (주소록의 연락처에 대한 변경 유형).응용 프로그램이 종료되면 서비스에 등록 된 ContentObserver가 종료됩니다.
나는이 ContentObserver을 사용하고 있습니다 :
public class ContactsContentObserver extends ContentObserver {
private Context context;
private Handler toastMessageHandler;
public ContactsContentObserver(Handler handler, Context ctx) {
super(handler);
context = ctx;
}
@Override
public void onChange(boolean selfChange) {
this.onChange(selfChange,null);
}
@Override
public void onChange(boolean selfChange, Uri uri) {
// Change Detected! Do something.
}
}
나는이 같은 서비스에이 관찰자를 등록 :
@Override
public int onStartCommand (Intent intent, int flags, int startId){
super.onStartCommand(intent, flags, startId);
registerContactsContentObserver();
return START_STICKY;
}
private void registerContactsContentObserver(){
ContactsContentObserver myObserver = new ContactsContentObserver(new Handler(), this);
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, myObserver);
}
내 주요 활동에서이 서비스를 시작합니다.
액티비티가 열려있는 경우 (백그라운드에서 작동하는 경우) 정상적으로 작동하며 연락처 데이터를 변경할 때마다 onChange() 메서드가 호출됩니다.
하지만 수동으로 안드로이드
내가 뭔가 잘못하고 있는가에 recent apps
에서 선택을 취소하여 응용 프로그램을 닫으면 전혀 작동하지 않는 이유는 무엇입니까? 앱이 종료 된 경우에도 서비스가 실행되지 않습니까?
전경에서 서비스 시작 – pskink
@ pskink 감사합니다. 전경에서 서비스를 시작하면 문제가 해결되었습니다. 나는 대답을 게시했다. 나는 그것이 왜 그런 식으로 작동하는지 이해하지 못했지만. –