Как выполнить фоновую задачу только один раз после установки приложения - PullRequest
0 голосов
/ 03 февраля 2019

Проблема: У меня есть сценарий, в котором мне нужно загрузить некоторые данные на сервер при первом запуске приложения.И задача загрузки должна быть выполнена, даже если пользователь немедленно выходит из приложения.Эту задачу нужно выполнять не всегда, а только в первый раз при запуске приложения.

Что я пробовал:

В настоящее время я пользуюсь Сервисомдля этого.Я запускаю липкий сервис во время запуска приложения и выполняю работу в сервисе.Таким образом, даже если пользователь немедленно закроет приложение, моя служба будет перезапущена, и я попытаюсь повторить процесс загрузки.

Но здесь мне нужно сохранить логический флаг в общем предпочтении hasUploadDone, чтобы помнить, что процесс загрузки уже завершен или нет, и мне нужно проверять это при каждом запуске приложения, хотя это не требуется для большинствавремен.Я не считаю это хорошим подходом.Есть ли лучший способ справиться с этим сценарием, кроме этой комбинации сервис - логический флаг?это может быть достигнуто с помощью Work-менеджера или что-то лучше?

Заранее спасибо!

1 Ответ

0 голосов
/ 03 февраля 2019

Используйте Shared Preferences для этого:

В вашем MainActivity

@Override
public void onStop() {
    super.onStop();
    SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    editor.putBoolean("previouslyStarted", true);
    editor.commit();
}

Затем В вашем методе onCreate
Если ваше приложение было запущено до того, как Shared Preferences сохранит значение «true» для«ранее сохраненный», иначе он будет по умолчанию «ложь»

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
previouslyStarted = saved_values.getBoolean("previouslyStarted", false);

Используйте if else, чтобы проверить, заявлено ли ваше приложение впервые

if (previouslyStarted) {
    //App has been started previously.
}
else {
   //App started for the first time.
   //Upload your data here.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...