我正在开发一个应用程序,其中有一个任务是处理偏好设置,因此我实现了开关偏好设置。如果开关打开,我需要监视联系人数据库,所以我使用内容观察器。当用户关闭开关时,我需要取消注册该内容观察器。请看我实现的代码:
MyContentObserver observer;
switchPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
boolean switched = ((SwitchPreference) preference)
.isChecked();
if( !switched){
// Toast.makeText(SettingActivity.this,"Switch is on",Toast.LENGTH_SHORT).show();
observer=new MyCOntentObserver();
getContentResolver()
.registerContentObserver(
ContactsContract.Contacts.CONTENT_URI, true,
observer);
}
else{
// Toast.makeText(SettingActivity.this,"Switch is off",Toast.LENGTH_SHORT).show();
// getContentResolver().unregisterContentObserver(observer);
//here i want a logic that to destroy instance which i created
while switch is On
}
return true;
}
});
public class MyContentObserver extends ContentObserver{
public MyCOntentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.e("","~~~~~~contact inserted or updated"+selfChange);
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
}
任何建议或帮助都将不胜感激。