2013-02-07 124 views
3

我下载到通过的AsyncTask图像视图的图像,我想救我的形象,当我转动我的电话,而不是重新下载到图像视图...如何在旋转屏幕时保存图像onSaveInstanceState?

public void onSaveInstanceState(Bundle toSave) { 
    super.onSaveInstanceState(toSave); 
    my_image.buildDrawingCache(); 
    Parcelable bm = my_image.getDrawingCache(); 
    toSave.putParcelable("savedImage", bm); 

} 

我试图明白,如果我做得不对的onSaveInstanceState 没有,我该如何找回这种状态onRestoreInstanceState和放置图像,而无需再次下载...

回答

0

所有super.onSaveInstanceState(toSave)首先应该是在最后的地方方法onSaveInstanceState(Bundle toSave)

onCreate(Bundle savedInstanceState)检查,如果savedInstanceState不为空,并得到你想要的东西:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
... 
    if(savedInstanceState != null){ 
     ... 
     ...savedInstanceState.getParcerable(...); 
     ... 
    } 
} 
6

的onSaveInstanceState()函数用于保存小物件,不适合重物。

如果你想在手机上保存旋转图像重,然后使用下列任一方法:

  1. 如果你想保存大对象使用onRetainNonConfigurationInstance()函数。
  2. 或者我们可以将该图像制作为静态图像,以便图像仅加载一次。 含义:在从网络下载图像时,使其指向一个静态变量。 如果用户旋转手机,由于android杀死该活动并重新创建它,只要 放置了一个if条件检查,如果该静态变量不为null,则只能再次下载。如你所知,静态变量只会被创建一次,它不会再次下载。

但最好去第一选择。

编号:developer android official tutorial

+0

onRetainNonConfigurationInstance()函数不建议使用。 –

0

不要使用静态变量守住位图。