1

多数の文字列を操作する効率的な方法を使用しているかどうかはわかりません。大きなファイル (~35kb) を開いて、すべての行を解析して操作する必要があります。例:

a1="Name surname"
a2="Name surname"
a3="Name surname"
...
a800="Name surname"

現在のIDをインデックスとして持つすべての名前の姓をsqlite dbに挿入する必要があります。

while ((s = d.readLine()) != null){
                        String[] name = s.split("\"");

                        String[] arrIdTemp = s.split("=");
                        String[] arrtId = arrIdTemp[0].split("a");

                        db.execSQL("INSERT INTO " + Constant.DB.DB_NAME
                                + " Values ('" + arrtId[1] + "','" + name[1]
                                + "');");

                    }

このようにして、3 つの文字列配列を作成し、最初の 100 行は非常に高速ですが、メモリの大量使用が原因で、操作全体が遅くなりますか? すべての行を分割して操作するためのより良い解決策はありますか?

Logcat の出力には、次のようなことがたくさんあります。

01-27 14:46:50.554: D/dalvikvm(2541): GC_CONCURRENT freed 1778K, 68% free 3606K/11079K, external 4662K/5822K, paused 4ms+7ms
4

1 に答える 1

0

[1°ソリューション]

2 つの操作を分割し、トランザクションを使用します。約60秒から、今は2〜3秒しか必要ありません。

これは私がしたことです:

//List of query
ArrayList<String> queryList = new ArrayList<String>();
...
while ((s = d.readLine()) != null){
                        String[] name = s.split("\"");

                        String[] arrIdTemp = s.split("=");
                        String[] arrtId = arrIdTemp[0].split("a");

                        queryList.add("INSERT INTO " + Constant.DB.DB_NAME
                                + " Values ('" + arrtId[1] + "','" + name[1]
                                + "');");

                    }

...

if (queryList!=null && queryList.size()>0){
                Iterator<String> iter = queryList.iterator();
                db.beginTransaction();
                try {
                    while (iter.hasNext()) {
                         db.execSQL(iter.next());
                        }
                    db.setTransactionSuccessful();
                } finally {
                    db.endTransaction();
                }
            }

私がやったことのより良い解決策や改善点があれば教えてください。

于 2013-01-27T18:12:02.933 に答える