我正在通过 AsyncTask 将图像下载到 ImageView ,并且我想在旋转手机时保存图像,而不是再次下载到 ImageView ...
public void onSaveInstanceState(Bundle toSave) {
super.onSaveInstanceState(toSave);
my_image.buildDrawingCache();
Parcelable bm = my_image.getDrawingCache();
toSave.putParcelable("savedImage", bm);
}
我试图了解 onSaveInstanceState 是否做错了什么,以及如何检索此状态 onRestoreInstanceState 并放置图像而不再次下载...
最佳答案
onSaveInstanceState() 函数必须用于保存小对象,而不是重对象。
如果您想在手机旋转时保存大量图像,请使用以下任一技术:
- 如果您想保存大型对象,请使用 onRetainNonConfigurationInstance() 函数。
- 或者我们可以将该图像设置为静态,以便该图像仅加载一次。 含义:从网络下载图像时,使其由静态变量指向。 如果用户旋转手机,因为 android 会终止该事件并重新创建它,只需 放置一个 if 条件检查该静态变量是否不为空,然后再次下载。 如您所知,静态变量只会创建一次,不会再次下载。
但最好选择第一个选项。
关于imageview - 旋转屏幕时如何在SaveInstanceState上保存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759321/