2013-01-11 69 views
0

我有一個Bundle和我將其存儲到盤作爲一個字節數組。現在,當我檢索它時,我接受字節數組。我怎樣才能再次將其轉換爲Bundle字節數組捆綁

byte fileContent[] = new byte[(int)file.length()]; 
int numerOfReturnedbytes = 0; 

try { 
    //read the stream and set it into the byte array readFileByteArray 
    //and returns the numerOfReturnedbytes. If returns -1 means that 
    //that the end of the stream has been reached. 
    numerOfReturnedbytes = fis.read(fileContent); 
    fis.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

if (numerOfReturnedbytes == -1) { 
    return; 
} else { 
    //creating empty parcel object 
    Parcel parcel = Parcel.obtain(); 
    //un-marshalling the data contained into the byte array to the parcel 
    parcel.unmarshall(fileContent, 0, numerOfReturnedbytes); 
} 

fileContent是字節數組。關於如何解決我的問題的任何想法?

+0

我不明白你的問題 – njzk2

回答

0

不要那樣做。從Android文檔:

包裹不是通用序列化機制。該類(以及用於將任意對象放入Parcel的相應Parcelable API)被設計爲高性能IPC傳輸。因此,將任何Parcel數據放入持久性存儲中是不恰當的:Parcel中任何數據的底層實現中的更改都會導致舊數據無法讀取。

這意味着,在OS升級之後,應用程序寫入的數據可能變得不可讀。

+0

,這意味着什麼?實際上如果不應該這樣做,我有什麼做的? –

+0

您可以單獨編寫包的元素。 – Henry

+0

我需要保持在內存中的數據只針對一個用戶的會話。這意味着我最多需要15分鐘。你不覺得在我的場合,這種方法很有用嗎? –

-1

難道是這樣的:

Bundle bundle = Bundle.CREATOR.createFromParcel(parcel); 

一旦你的包裹?

編輯

還是

Bundle bundle = parcel.readParcelable(null); 

?我不記得了。我閱讀文檔,但你知道...

(其實,我真的不知道什麼是最好的,他們似乎做幾乎同樣的事情)

編輯2

還有的在文檔啄信息

Bundle bundle = parcel.readBundle(); 

驚人的數量。我應該更頻繁地去那裏。

+0

這種解決方案實際上沒有工作.. –

+0

並不完全知道如何真正創建你的那個文件,所以,是的,這可能是不完全是如何工作 – njzk2

+0

沒有什麼工作! –