Android область видимости и взаимодействия

235
01 февраля 2018, 18:05

У меня есть одна функция которая работает как сервис, но она не срабатывает, я не могу понять почему. Вот код функции:

public class TimeToServer extends Service {
boolean yes_sinchron = false;
boolean isOnline = true;
public TimeToServer() {
    Timer newTimer = new Timer();
    TimerTask time_to_Srever = new TimerTask() {
        @Override
        public void run() {
            Log.d("TimeToServer", "Работаю");
            long time_to_server = mSettings.getLong(TimeObn, 0);
            if (time_to_server != 0) {
                byte time_delay_Sinhron = (byte) mSettings.getInt(SettingSinhron, 2);
                switch (time_delay_Sinhron) {
                    case (0):
                        time_to_server += 600000;
                        Log.d("TimeToServer", "Проверям переодичность 10 минут");
                        break;
                    case (1):
                        time_to_server += 1800000;
                        Log.d("TimeToServer", "Проверям переодичность 30 минут");
                        break;
                    case (2):
                        time_to_server += 3600000;
                        Log.d("TimeToServer", "Проверям переодичность 1 час");
                        break;
                    case (3):
                        time_to_server += 10800000;
                        Log.d("TimeToServer", "Проверям переодичность 3 часа");
                        break;
                    case (4):
                        time_to_server += 21600000;
                        Log.d("TimeToServer", "Проверям переодичность 16 часов");
                        break;
                    case (5):
                        time_to_server += 43200000;
                        Log.d("TimeToServer", "Проверям переодичность 12 часов");
                        break;
                    case (6):
                        time_to_server += 86400000;
                        Log.d("TimeToServer", "Проверям переодичность 24 часа");
                        break;
                    default: break;
                }
                long time_Now = System.currentTimeMillis();
                if (time_Now >= time_to_server) {
                    yes_sinchron = true;
                    Log.d("TimeToServer", "Надо начинать синхронизацию");
                }
            }
        }
    };
    newTimer.schedule(time_to_Srever, 0, 120000);
    if (yes_sinchron) {
        Log.d("TimeToServer", "Запуск синхронизации");
        if (Sinchron_bd.performClick()) {
            isOnline = false;
            yes_sinchron = false;
        } else {
            Toast.makeText(getApplicationContext(), R.string.not_conn_internet, Toast.LENGTH_LONG).show();
            Log.d("TimeToServer", "Нету интернета");
        }
    } else {
        Log.d("TimeToServer", "Еще не время");
    }
}
@Override
public IBinder onBind(Intent intent) {
    // TODO: Верните канал связи в службу.
    return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return Service.START_STICKY;
}
}

Сама проблема заключается в том что yes_sinchron не определяется как true хотя должна. А если точнее то это if else вообще не отрабатывает.

Answer 1

Вот это не будет срабатывать никогда.

newTimer.schedule(time_to_Srever, 0, 120000);
if (yes_sinchron) {
    // ...
}

Флаг yes_sinchron будет всегда false.

Нельзя ожидать результат асинхронной операции и еще запущенной по расписанию сразу после факта запуска.

READ ALSO
Как протестировать приватный Injected обьект?

Как протестировать приватный Injected обьект?

Как протестировать приватный Injected обьект?

324
JOIN на уровне базы данных или на уровне приложения?

JOIN на уровне базы данных или на уровне приложения?

Имется две таблицы: Судья и СоревнованиеОдно соревнование судят несколько судей, один и тот же судья может судить несколько соревнований

245
Как устроена иерархия классов и методов

Как устроена иерархия классов и методов

Учу ООП java, возник вопрос

243
Python не дружит с Java

Python не дружит с Java

В NetBeans IDE создана форма проекта с одной кнопкой , которая в обработчике событий имеет код на выполнение скрипта , который написан на PythonСкрипт...

297