1

アプリの開始時にメモリにロードする必要があるいくつかのファイルに格納された一連のオブジェクトがあります。これが私のやり方です:

    FileInputStream fis = null;
    ObjectInputStream ois = null;
    Object result = null;
    try {
        fis = new FileInputStream(inFile);
        ois = new ObjectInputStream(fis);
        result = ois.readObject();
        //and then do something with result

HashMap<Integer, int[]>問題は、サイズが 500k を超えるobject( ) をロードしようとすると、携帯電話で永遠に時間がかかることです。それが ObjectInputStream の問題であるかどうかはわかりません。もしそうなら、ファイルからオブジェクトを保存および取得するための他のより高速な方法はありますか? 速いほど良いです、どうもありがとう。

4

2 に答える 2

1

ProtocolBuffersまたはAndroidのネイティブシリアル化であるParcelを使用できます。

アップデート:

なぜこれほど多くのオブジェクトをファイルに保存し、それらすべてを同時にメモリにロードするのですか?ご存知のように、それは永遠にかかり、多くのメモリを使用します。これが必要な特別な理由はありますか?

データベースを使用する必要があります。データベースを使用すると、データを選択的にクエリし、特定の時間に必要なオブジェクトのみをロードできます。

于 2011-05-18T10:36:44.617 に答える
0

FileInputStream を BufferedInputStream にラップしようとしましたか? 基になるストリームとの高価なやり取りを最小限に抑えます。

...
ois = new ObjectInputStream(new BufferedInputStream(fis));
...
于 2011-05-18T12:28:03.547 に答える