imageview - 旋转屏幕时如何在SaveInstanceState上保存图像?

标签 imageview instance

我正在通过 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() 函数必须用于保存小对象,而不是重对象。

如果您想在手机旋转时保存大量图像,请使用以下任一技术:

  1. 如果您想保存大型对象,请使用 onRetainNonConfigurationInstance() 函数。
  2. 或者我们可以将该图像设置为静态,以便该图像仅加载一次。 含义:从网络下载图像时,使其由静态变量指向。 如果用户旋转手机,因为 android 会终止该事件并重新创建它,只需 放置一个 if 条件检查该静态变量是否不为空,然后再次下载。 如您所知,静态变量只会创建一次,不会再次下载。

但最好选择第一个选项。

引用号:developer android official tutorial

关于imageview - 旋转屏幕时如何在SaveInstanceState上保存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759321/

相关文章:

java - 将 ImageView 转换为整数 : Android Studio

typescript - 如何在 typescript 中检测具有泛型的类实例

python - 我们可以将多少个类/实例注册到 xml rpc 服务器中?

java - 如何测试java接口(interface)?

java - android imageview.setBackgroundResource() 不工作

java - 在自定义 ImageView Android 中动态更改图像源

java - setImageResource() 和 attrs 值

Android:将两个叠加 ImageView 组合到具有正确位置的 bmp

class - 使一个类成为另一个类的实例

Azure容器实例没有IP