Не обновляется значение метода Java (Android)

Определяю силу сигнала в дБм. Для этого использую метод:

    static int getSignalStrength(Context context3) throws SecurityException {
    TelephonyManager telephonyManager = (TelephonyManager) context3.getSystemService(Context.TELEPHONY_SERVICE);
    int strength = 0;
    assert telephonyManager != null;
    List<CellInfo> cellInfos = telephonyManager.getAllCellInfo();
    if (cellInfos != null) {
            if (cellInfos.get(0).isRegistered()) {
                if (cellInfos.get(0) instanceof CellInfoWcdma) {
                    CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfos.get(0);
                    CellSignalStrengthWcdma cellSignalStrengthWcdma = cellInfoWcdma.getCellSignalStrength();
                    strength = cellSignalStrengthWcdma.getDbm();
                } else if (cellInfos.get(0) instanceof CellInfoGsm) {
                    CellInfoGsm cellInfogsm = (CellInfoGsm) cellInfos.get(0);
                    CellSignalStrengthGsm cellSignalStrengthGsm = cellInfogsm.getCellSignalStrength();
                    strength = cellSignalStrengthGsm.getDbm();
                } else if (cellInfos.get(0) instanceof CellInfoLte) {
                    CellInfoLte cellInfoLte = (CellInfoLte) cellInfos.get(0);
                    CellSignalStrengthLte cellSignalStrengthLte = cellInfoLte.getCellSignalStrength();
                    strength = cellSignalStrengthLte.getDbm();
                } else if (cellInfos.get(0) instanceof CellInfoCdma) {
                    CellInfoCdma cellInfoCdma = (CellInfoCdma) cellInfos.get(0);
                    CellSignalStrengthCdma cellSignalStrengthCdma = cellInfoCdma.getCellSignalStrength();
                    strength = cellSignalStrengthCdma.getDbm();
                }
            } else {
                System.out.println("Другой тип связи");
            }
    }
    return strength;
}

Далее вызываю этот метод в другом классе (по нажатию на кнопку) и присваиваю его значение переменной:

final int signal_dbm = MyDbmClass.getSignalStrength(this);

После этого вывожу результат на экран:

MyText.setText(signal_dbm);

Собственно проблема: значение обновляется только иногда (это ещё более странно, чем если бы оно не обновлялось совсем), обычно же остаётся старым, определённым с предыдущим нажатием кнопки и неверным. Совсем не понимаю почему так происходит, ведь с каждым нажатием на кнопку метод должен вызываться заново и значение должно меняться. Вместе с силой сигнала я вывожу ещё ряд данных таким же способом и они обновляются с каждым нажатием как положено.


Ответы (0 шт):