2015-11-09 51 views
0

我有一個對象,我想要序列化一個BitmapDrawable字段。 我實現自定義序列化/反序列化下面的方法:Android自定義序列化訪問上下文

private void writeObject(ObjectOutputStream out) throws IOException { 
    out.defaultWriteObject(); 
    art.getBitmap().compress(Bitmap.CompressFormat.WEBP, 100, out); 
} 

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 
    in.defaultReadObject(); 
    art = new BitmapDrawable(BitmapFactory.decodeStream(in)); 
} 

這工作,但沒有資源BitmapDrawable構造已被棄用,我想使用的首選構造函數。傳遞給readObject的Android上下文有什麼好方法?

+0

你的對象類是否使用'Context'作爲其他任何東西?你在構造函數中傳遞它嗎? –

+0

不,但是如果我確實爲此傳遞了一個,因爲我在readObject方法中需要它,我假設我不想序列化上下文,所以在readObject中,我無法訪問它,對吧? – Nick

+1

對,對。即使你想要,你也不能序列化'Context'。你可能不得不改變你的類來保存'Bitmap',並根據需要創建一個'BitmapDrawable'。否則,你可能會被堅持使用不贊成使用的構造函數。 –

回答

0

要引用Mike M對上述評論的回答,以便可以關閉此問題。

您可能不得不改變你的類,只保存位圖,並根據需要創建一個BitmapDrawable。

基本上,而不是將位圖轉換爲類中的BitmapDrawable,我在需要Drawable(因爲我可以訪問這些位置中的上下文)的活動中執行該操作。所以,而不是序列化一個BitmapDrawable我序列化一個位圖,這不需要上下文反序列化。