2011-10-14 7 views
1

私はアンドロイド用のキーボードアプリを書いています。私はSQL DBの文字列キー値です。SQLの方法がAndroidで遅すぎる...どうすればそれをスピードアップできますか?

ここでは、1つのキーの行の例を示します。 DB全体には、およそ160行あります。

(BTNID,TEXTADJUST,BUTTONSCALE,BUTTONSCALECNT,SPACINGLR,SPACINGTB,BTNOPA,BTNTEXT,BTNTEXTONCLICK,BTNTEXTONSHIFTCLICK,BTNTEXTCOLOR,BTNHUE,BTNSAT,LAYOUTSTDALTNUM,ATROW,BTNHUEHIT) VALUES('1','0','1','1','2','5','255','Q','qQ','Qq','0xFFFFFFFF','0','0','STD','1','0') 

私は

TBL_NAME = preferences.getString("TBL", "EnglishZLayout"); 

     SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1); 
     SQLiteDatabase DB = sqlHelper.getReadableDatabase(); 

     String TBL_NAME_BTN = TBL_NAME.replace("ZLayout", "ZButtons"); 
     Cursor c = DB.rawQuery("SELECT * FROM "+TBL_NAME_BTN, null); 

     c.moveToFirst(); 
     while (c.isAfterLast() == false) { 
      ... 

ことで、この値を読んでいると、妙にそれがロードするのに約20〜30秒かかります。任意のアイデアをどのようにスピードアップするには?

ユーザーがキー値を変更できる必要があるため、アプリ内にキー値を保存できません。

ありがとうございます!

+1

うん...何かが間違っているようです。 SQLは通常、これほど長い時間がかかりません。どのような作業がここで行われていますか? –

+0

あなたはそれが(そうした)長い時間を要するクエリだと確信していますか?エミュレータ上でさえ、20秒は普通の状態を超えているようです...カーソルループで非常に単純なログ出力を試しましたか?これを実際のデバイスでテストしましたか? –

+0

さて、それはまた、ベクトルフォームなどのボタンを描画しますが、私はすでに読み込まれたレイアウトを切り替えているように、瞬時に表示されるので、時間がかかりません。 – Roger

答えて

1

あなたはクエリを実行するたびにDBヘルパーを再作成していませんか?アプリの起動時にこれを一度行います。

0

この記事を見つけるかもしれない他の誰のための「答え」に私のコメントを有効にするには:実際のボタンの描画コードなしでループを試してみてください

  • ...あなたはSQLではない可能性がわかります問題は