我已经实现了一个同步适配器,它通过服务器发送我的所有联系人。 但现在我面临的问题是,如果联系人列表已经更新,系统可以如何响应。
我使用内容观察者查找但似乎仅限于活动生命周期。
这是我的代码:
class MyObserver extends ContentObserver {
public MyObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
this.onChange(selfChange, null);
}
@Override
public void onChange(boolean selfChange, Uri uri) {
Log.e("change ", "contact");
}
}
注册:
context.getContentResolver().registerContentObserver(
Contacts.CONTENT_URI, false, new MyObserver(new Handler()));
没有任何广播可以通知它。
或者我必须为它提供服务。
答案 0 :(得分:2)
为此你必须按如下方式运行服务
public class ContactService extends Service {
MyObserver observer;
@Override
public void onDestroy() {
// TODO Auto-generated method stub
getContentResolver().unregisterContentObserver(observer);
super.onDestroy();
}
@Override
public void onCreate() {
System.out.println("service created");
observer=new MyObserver(new Handler());
// TODO Auto-generated method stub
getContentResolver().registerContentObserver(Contacts.CONTENT_URI, false, observer);
super.onCreate();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
然后,您将在更改联系人数据时通知。