Я пишу простое приложение, которое устанавливает изображение в ImageView
через Intent
, вызывающее камеру. Но когда я меняю ориентацию, изображение исчезает. Я уже пробовал эти вопросы Q1, Q2. В предыдущих вопросах предлагается либо использовать onSaveInstanceState
, либо Сохранение объекта во время изменения конфигурации.
Но в документах по Android я прочитал:
вы можете столкнуться с ситуацией, в которой перезапуск вашего приложения и восстановление значительных объемов данных могут быть дорогостоящими и создавать плохое взаимодействие с пользователем.
Таким образом, если Bitmap
считается значительным объемом данных, мне нужно будет использовать setRetainInstance
, но в документации сказано:
Хотя вы можете хранить любой объект, вы никогда не должны передавать объект, связанный с действием, например Drawable, адаптер, представление или любой другой объект, связанный с контекстом.
Какой подход я должен использовать, чтобы иметь возможность восстановить изображение при изменении ориентации?
Что я сделал до сих пор
private ImageView mPhotoImgage;
private Bitmap mCameraData;
onCreate {
mPhotoImgage = (ImageView) findViewById(R.id.photoResultImage);
if (savedInstanceState != null){
mPhotoImgage.setImageBitmap((Bitmap)savedInstanceState.getParcelable(IMAGE_RESOURCE));
}
}
onResume{
if (mCameraData != null){
mPhotoImgage.setImageBitmap(mCameraData);
}
super.onResume();
}
onSaveInstanceState{
outState.putParcelable(IMAGE_RESOURCE, mCameraData);
super.onSaveInstanceState(outState);
}
Но после двух смен ориентации изображение исчезает.