2013-03-08 26 views
0

運行我的android應用程序,我得到上面提到的錯誤,然後我調試的手機變得沒有響應,直到我強制重新啓動它。這是造成錯誤發生的代碼是在這個類:我該如何解決說DeferFlushOpWorker的錯誤:超時等待ops刷新? Android

public class BitmapSerializable implements Serializable 
{ 

/** 
* 
*/ 
private static final long serialVersionUID = 6855267020377781806L; 

private transient Bitmap image; 
private byte[] imageByteArray; 

public BitmapSerializable() 
{ 

} 

public BitmapSerializable(Bitmap bmp) 
{ 
    setImage(bmp); 
} 

public Bitmap getImage() { 
    if (imageByteArray == null) 
    { 
     return null; 
    } 
    image = BitmapFactory.decodeByteArray(imageByteArray, 0, imageByteArray.length); 
    return image; 
} 

public void setImage(Bitmap image) { 
    this.image = image; 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    image.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    imageByteArray = baos.toByteArray(); 
} 

} 

錯誤被拋出時,序列化這個對象,讀它放回,然後調用的getImage()方法。誰能幫忙?

+0

爲什麼你需要一個可串行化的位圖?考慮到位圖已經實現了parcelable的事實。 – yorkw 2013-03-08 03:55:31

+0

來自http://developer.android.com/reference/android/os/Parcel.html: 包裹不是一個通用的序列化機制。該類(以及用於將任意對象放入Parcel的相應Parcelable API)被設計爲高性能IPC傳輸。因此,將任何Parcel數據放入持久性存儲中是不恰當的:Parcel中任何數據的底層實現中的更改都會導致舊數據無法讀取。 – 2013-03-08 04:06:51

回答

0

明白了。問題不在於序列化本身,當我嘗試添加do intent.putExtra(「bs」,BitmapSerializable); 對於有這個錯誤的其他人,試圖將類似於我的課程的東西分類是可能的原因。