【发布时间】:2020-01-31 15:05:00
【问题描述】:
我正在使用内容提供者获取所有联系人,并使用联系人观察器检查此联系人何时更改,但效果不佳
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
Log.e("MAS_CHECK", uri + "");
deliverSelfNotifications();
dataBaseAdapter = new DataBaseAdapter(context);
preferences = context.getSharedPreferences("Dtmf app", Context.MODE_PRIVATE);
editor = preferences.edit();
counter = counter + 1;
boolean ExitFromApp = preferences.getBoolean("ExitFromApp", false);
if (counter == 1) {
Log.e("OTD_CHANGE", "there is change");
if (!ExitFromApp) {
final Thread thread = new Thread() {
@Override
public void run() {
Log.e("OTD_CHANGE", "Waiting update to be stable");
try {
sleep(60000);
Log.e("OTD_CHANGE", "update start .. loading new data");
if (dataBaseAdapter.DeletAllItem()) {
ToolsUtils.GetContacts(context);
}
//--------------------------to restart app ----------------
editor.putBoolean("OTD_CHANGE", true);
editor.commit();
counter = 0;
Log.e("OTD_CHANGE", "update finish");
Intent i = new Intent(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
//-----------------------------------------------------------------
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
} else if (ExitFromApp) {
counter = 0;
editor.putBoolean("THERE_IS_UPDATE", true);
editor.commit();
}
}
}
**所以我怎样才能让它每次都能稳定工作,这就是代码 当检测到更改时,它应该删除数据库中的旧联系人,然后重新添加新数据**
【问题讨论】:
-
but it not working good- 您需要指定更多信息才能获得帮助,究竟是什么不起作用?您发布的代码也是一个非常通用的 ContentObserver,请显示您的代码 -
变化很大的时候是不行的,比如换了号码、照片和名字就不行了
-
或者您可以控制
ContactsContract.RawContacts.VERSION列。