Эффективно и периодически обновлять переменную - PullRequest
0 голосов
/ 09 сентября 2018

Какой самый эффективный способ периодически обновлять переменные в Android?

У меня есть целые числа, значения которых нужно увеличивать каждую секунду (только когда приложение открыто), и они должны быть доступны во всех действиях/fragments.

Прямо сейчас это мой код:

onCreate () in MainActivity :

Timer timer = new Timer();
TimerTask updateValues = new UpdateValues();
timer.scheduleAtFixedRate(updateValues, 0, 1000);

и UpdateValues ​​ класс:

public static final String MY_PREFS_NAME = "MyPrefsFile"
class UpdateValues extends TimerTask {
    public void run() {
        SharedPreferences sharedPref = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();

        int first = sharedPref.getInt("first_key", 0);
        editor.putInt("first_key", first + 1);
        // a lot of stuff in here

        editor.apply();
    }
}

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Не проще ли записать, сколько раз приложение было открыто, и посчитать из этого значение вашего целого числа? Примерно так:

public int getValue() {
    return (System.currentMillis() - startTimeMillis) / MILLIS_PER_SECOND;
}

На самом деле вам не нужно изменять состояние, чтобы подсчитать количество секунд с момента запуска приложения, если только я не понял ваш вопрос.

0 голосов
/ 09 сентября 2018

запустите сервис NOT_STICKY и введите код таймера в сервис. Поэтому, пока ваше приложение находится на переднем или на заднем плане, переменная будет увеличиваться сама по себе, и, как только приложение закрывается, служба останавливается и переменная не увеличивает себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...