У меня есть сомнения относительно обратного вызова Retrofit2 и onSaveInstanceState. Я хочу сохранить состояние двух переменных: var1 и var2 в onSaveInstanceState. Эти две переменные (на самом деле не простые переменные) принимают свои значения в обратном вызове в методе onResponse. Он длится всего миллисекунды, но если я поворачиваю устройство до того, как две переменные получат свои значения в onResponse, авария приложения. Я не очень хорошо знаю, как справиться с этой ситуацией. Я хотел бы знать ваши подходы к этому, чтобы избежать сбоя. (На самом деле у меня есть 2 модифицированных обратных вызова, они независимы друг от друга, один для рисования графического изображения, а другой для представления данных в текстовых изображениях). Заранее благодарим и извиняюсь за мои плохие навыки владения английским языком.Модифицированные обратные вызовы и saveinstanceState
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("var1",var1);
outState.putInt("var2",var2);
}
retrofitcallback() {
return new Callback<T>() {
public void onResponse() {
var1=...
var2=...
}
public void onFailure() {
}
};
}
Спасибо за ваш ответ. Я не могу использовать загрузчики, так как я не использую базу данных. По слухам, я полагаю, что вы имеете в виду IntentService, я думал об этом раньше, но я не очень хорошо понимаю преимущества использования службы, мне все равно нужно сохранить результат службы в переменной и использовать ее в onSaveInstanceState, и если пользователь поворачивает экран до завершения обслуживания, у меня будет такая же проблема, не так ли? –
Вы также можете использовать загрузчики без базы данных. Погрузчики с LoaderManager заботятся о жизненном цикле Activity/Fragment. Вы просто отправляете запрос в метод loader onForceLoad и в обратном вызове обратного вызова deliverResult. Все ваши данные не будут уничтожены при перезапуске активности. То же самое, чего вы можете достичь с помощью Сервиса (обычный сервис или IntentService - не имеет значения), но получить результат будет сложнее. Otto/EventBus как возможные варианты. –