Si vous avez de plus près sur les sources Android, vous verrez que, après l'enregistrement PhoneStateListener
vous aurez une notification instantanée:
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
}
}
Vous pouvez créer votre propre minuterie et mise à jour de la minuterie enregistrer le nouvel auditeur et après Si vous recevez une mise à jour instantanée, supprimez-la en transmettant le même objet écouteur et définissez l'argument events sur LISTEN_NONE
.
Bien sûr, je ne peux pas appeler cela la meilleure pratique, mais la seule alternative que je peux voir est de calculer la force du signal par vous-même en fonction des intensités du signal de getNeighboringCellInfo()
.
p.s. Not only God knows quand PhoneStateListener
sera déclenchée;)
pouvez-vous essayer ma solution et voir si cela fonctionne? –