Сохранить android индикатор выполнения или возобновить его - PullRequest
0 голосов
/ 28 февраля 2020

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

Таким образом я сохраняю состояние индикатора выполнения

private static SharedPreferences.Editor pref;
private static int saveProgressBarState;
private static SharedPreferences getProgressBarState;

private CountDownTimer countDown(final long time, final ProgressBar lessonProgress, long originalTimerSize) {

        final int timerLengthInSecond = (int) time / 1_000;

        lessonProgress.setMax((int) originalTimerSize / 1_000);

        return new CountDownTimer(time, 1000) {
            @Override
            public void onTick(long l) {

                long secondRemaining = l / 1_000;

                lessonProgress.setProgress((int) (timerLengthInSecond - secondRemaining));

                //Getting progress of progress bar
                saveProgressBarState = lessonProgress.getProgress();

            }

            @Override
            public void onFinish() {

                lessonProgress.setProgress(timerLengthInSecond);
            }
        };

    }

//this method is called when onPause() is called on the activity
public static void runLessonTimerInBackground(Context context) {

        pref = context.getSharedPreferences("LESSONPROGRESS", MODE_PRIVATE).edit();
        pref.putInt("savedprogress", progressBarStateSave);
        pref.apply();

    }

Я хочу получить сохраненный индикатор выполнения и возобновить его выполнение на прежнем уровне и продолжить прогресс

1 Ответ

2 голосов
/ 28 февраля 2020

Вам необходимо добавить эти ссылки в onResume(). Я предполагаю, что вы можете настроить и применить это в своем реальном прогрессе lesson

int lastProgress = pref.getInt("savedprogress", 0); //0 is default value

lessonProgress.setProgress(lastProgress); //this will set the progress

//here you might also need to do some other stuff related to your code and req
//you can also resume your lesson video from here, etc.

Если вы хотите сохранить прогресс нескольких уроков в sharePref я предлагаю вам сохранить прогресс как

String progressPrefName = "savedProgress_" + lessonID; //here lessonID is lesson's unique ID
pref.putInt(progressPrefName, progressBarStateSave); // here pass the name which can be "savedProgress_1" referring to lesson with ID 1

Затем вы можете получить его как

String progressPrefName = "savedProgress_" + lessonID; 

int lastProgress = pref.getInt(progressPrefName, 0); //0 is default value

lessonProgress.setProgress(lastProgress); //this will set the progress
...