1

があり、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バイト配列です。どうすれば問題を解決できるかについてのアイデアはありますか?

4

3 に答える 3

0

そうしないでください。Androidのドキュメントから:

パーセルは、汎用のシリアル化メカニズムではありません。このクラス(および任意のオブジェクトをParcelに配置するための対応するParcelable API)は、高性能IPCトランスポートとして設計されています。そのため、パーセルデータを永続ストレージに配置することは適切ではありません。パーセル内のデータの基盤となる実装を変更すると、古いデータが読み取れなくなる可能性があります。

これは、OSのアップグレード後、アプリケーションによって書き込まれたデータが読み取れなくなる可能性があることを意味します。

于 2013-01-11T15:33:01.650 に答える
-1

それは次のようなものでしょうか:

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

あなたが小包を手に入れたら?

編集

またはそれは

Bundle bundle = parcel.readParcelable(null);

?覚えていない。私はドキュメントを読みましたが、あなたは知っています...

(実際、私は本当に何が最善かわかりません、彼らはほとんど同じことをしているように見えます)

編集2

もあります

Bundle bundle = parcel.readBundle();

ドキュメント内の情報の量は驚くべきものです。もっと頻繁に行くべきです。

于 2013-01-11T15:33:07.823 に答える