【发布时间】:2014-05-30 22:15:00
【问题描述】:
我正在编写一个简单的应用程序,通过调用相机的Intent 将图像设置为ImageView。但是当我改变方向时,图像消失了。我已经尝试过这个问题Q1,Q2。前面的问题建议使用onSaveInstanceState 或在配置更改期间保留对象。
但在Android docs我读过:
您可能会遇到重新启动应用程序和恢复大量数据的成本可能会导致用户体验不佳的情况
所以,如果 Bitmap 被认为是“大量数据”,我将需要使用 setRetainInstance,但在文档中说:
虽然您可以存储任何对象,但绝不应传递与 Activity 绑定的对象,例如 Drawable、Adapter、View 或与 Context 关联的任何其他对象
我应该使用什么方法来恢复方向变化的图像?
到目前为止我做了什么
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);
}
但经过两次方向更改后,图像消失了。
【问题讨论】:
标签: android bitmap orientation-changes