1

72000 行でサイズが 2,6M のファイルがあります。このファイルには、AutoCompleteTextView のすべての文字列項目があります。現在、私は次のように読んでいます:

List<IcdObject> codes = new ArrayList<IcdObject>();
try {
    InputStream input = getAssets().open("icd.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(input));

    String line;
    while ((line = br.readLine()) != null) {
    String[] icd = line.split("|");
    codes.add(new IcdObject(icd[0], icd[1]));
    }

    input.close();
} catch (IOException e) {
    // TODO
    e.printStackTrace();
}
ArrayAdapter<IcdObject> adapter = new ArrayAdapter<IcdObject>(this,
    android.R.layout.select_dialog_item, codes);
AutoCompleteTextView at = (AutoCompleteTextView) findViewById(R.id.AutoComplete);
at.setThreshold(3);
at.setAdapter(adapter);

アクティビティを開始すると、ガベージ コレクターがおかしくなりました。しかし、約1分待った後、最終的にすべてのアイテムがロードされます。オンデマンドでファイルをロードしたり、高速化する方法はありますか?

4

1 に答える 1

1

Loaders API を使用して、これらの大規模なデータ セットの読み取りを実行できます。LoaderManager.LoaderCallbacksクラスは、LoaderManager からコールバックを取得するために使用されます

于 2013-08-14T19:37:47.613 に答える