У меня есть два вида деятельности: мой MainActivity
и другой, называемый DetailActivity
.Когда приложение запускается впервые, оно открывает MainActivity
, и там оно связывает DataService
и выполняет вызов, чтобы получить некоторые данные и заполнить представление списка.
В этом представлении списка пользователь имеет кнопку для открытия так называемого подробного представления для каждого элемента в списке.Открытие этого подробного вида означает запуск второго действия (DetailActivity
).
Это делается так:
final Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra("data", dto);
getContext().startActivity(intent);
Когда открывается второе, пользователь может вернуться назад, используя backКнопка (слева от кнопки «Домой» на 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
}
};