У меня есть растровое изображение, которое я загружаю с SD-карты, позволяя пользователю выбрать изображение для отображения. После создания растрового изображения я устанавливаю растровое изображение в ImageView:
mBitmap = Bitmap.createBitmap(Media.getBitmap(this.getContentResolver(), mPictureUri));
mImageView.setImageBitmap(mBitmap);
Это отлично работает. Но если я меняю ориентацию экрана с книжной на альбомную и возвращаюсь несколько раз, я всегда получаю исключение OutOfMemory.
В onPause я вызываю mBitmap.recycle (), а затем в onResume я снова вызываю приведенный выше код, чтобы создать растровое изображение и установить ImageView. Так как я каждый раз перерабатываю образ, как я могу получить ошибку OutOfMemory?
В любом случае, поскольку это не удалось, я нашел сообщение, в котором говорится, что он пытается использовать onRetainNonConfigurationInstance () и getLastNonConfigurationInstance (). См. Сообщение Сохранение кэша при повороте устройства . Я изменил свой код для работы таким образом, и я все еще получаю ошибку. При изменении кода у меня был вызов getLastNonConfigurationInstance () в onCreate (), и я удалил весь код в onPause и onResume.
Может кто-нибудь сказать мне, в чем проблема, или предоставить какой-либо способ просто загрузить изображение, а затем иметь возможность приостановить и возобновить действие, не исчерпав память? Спасибо.