Если вы ближе познакомитесь с источниками Android, то увидите, что после регистрации PhoneStateListener
вы получите мгновенное уведомление:
public void listen(PhoneStateListener listener, int events) {
String pkgForDebug = mContext != null ? mContext.getPackageName() : "<unknown>";
try {
Boolean notifyNow = (getITelephony() != null);
mRegistry.listen(pkgForDebug, listener.callback, events, notifyNow);
} catch (RemoteException ex) {
// system process dead
}
}
Таким образом, вы можете создать свой собственный таймер, а при обновлении таймера зарегистрировать нового слушателя и после получения мгновенного обновления удалить его, передав тот же объект слушателя, и установить аргумент события в LISTEN_NONE
.
Конечно, я не могу назвать это лучшей практикой, но единственная альтернатива, которую я вижу, - это рассчитать уровень сигнала самостоятельно, основываясь на уровнях сигнала от getNeighboringCellInfo()
.
p.s. Не только Бог знает , когда сработает PhoneStateListener
; *