Я знаю, что у вас есть соблазн отметить это дубликат, но подождите, давайте рассмотрим это снова с моими подробными (но неудачными) попытками.Метод Observer onChange уволен несколько раз
Стратегия 1: Алгоритм:Answer
В первый раз OnChange обжигают, получить идентификатор строки обновленного
В следующий раз, когда OnChange запускаемые снова получить идентификатор строки обновлен
Соответствие ID
Игнорируйте если же идентификатор
Проблема такого подхода заключается в том, что она является уязвимой к гонке условий. Если к моменту получения идентификатора обновленной строки onChange уволил за второй раз, этот алгоритм терпит неудачу. Это произошло из моего личного опыта при тестировании на медленных машинах или машин, работающих на максимальной мощности.
Стратегия 2: Алгоритм:Answer
Override deliverSelfNotifications() возвращает истинное.
Это кажется перспективным сначала, но не работает. кода я использовал для справки:
В Основной деятельности: OnCreate метод зарегистрироваться:
getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new CtObserver(new Handler()));
Тогда в отдельном классе:
package com.example.testproject;
import android.database.ContentObserver;
import android.os.Handler;
import android.util.Log;
/**
* @author Time Traveller
*/
public class CtObserver extends ContentObserver {
public CtObserver(Handler handler) {
super(handler);
}
public boolean deliverSelfNotifications(){
return true;
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.e("onChange","Fired");
}
}
Почему вы должны внести свой вклад в этот ответ:
Запрос провайдера SMS-сообщений является единственным способом для приложений, отличных от по умолчанию, до capture мероприятие для Отправлено SMS. Но до сих пор я не нашел убедительного полностью функционального ответа для этого метода. Так что нам действительно нужно понять это!
Вопросы:
- Что такое функциональный (не приспособленный) способ просто зная, что SMS было написано в Content Provider только один раз?
- Каков правильный способ использования deliverSelfNotifications() в классе Content Observer?
Вам не нужно отвечать на все вопросы, просто сообщите нам все, что вы знаете.