У меня есть два занятия: мой MainActivity
и еще один под названием DetailActivity
. Когда приложение запускается впервые, оно открывает MainActivity
, связывает DataService
и делает вызов для получения некоторых данных и заполнения представления списка.
В этом представлении списка у пользователя есть кнопка, чтобы открыть так называемый подробный вид для каждого элемента в списке. Открытие этого подробного представления означает запуск второго действия (DetailActivity
).
Это делается так:
final Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra("data", dto);
getContext().startActivity(intent);
Когда открыт второй, пользователь может вернуться назад либо с помощью кнопки «Назад» (одна слева от кнопки «Домой» на Android), либо щелкнув стрелку «Назад» в заголовке.
Все работает так, как ожидалось, за исключением того, что когда пользователь возвращается к MainActivity
, DataService
снова связывается, и выполняется вызов для извлечения данных, и список обновляется. Итак, если пользователь находится где-то в пункте №. 205 он будет возвращен обратно к стартовому пункту.
Есть ли способ сохранить данные или состояние MainActivity
, когда пользователь возвращается к нему, который не обновляется?
Сервис связан вот так
@Override
protected void onStart() {
super.onStart();
bind(DataService.class);
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(connection);
}
private void bind(final Class... toBind) {
for (final Class clazz : toBind) {
bindService(new Intent(this, clazz), connection, BIND_AUTO_CREATE);
}
}
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(final ComponentName name, final IBinder service) {
if (service instanceof DataService.LocalBinder) {
dataService = ((DataService.LocalBinder) service).getInstance();
dataService.readData();
}
}
@Override
public void onServiceDisconnected(final ComponentName name) {
// Empty By Default
}
};