0

sqliteデータベースファイルの列を使用してテキストビューを設定しています。問題は、ビューを前後に変更すると、データベースから取得するときに非常に明らかなラグが発生することです。コードは次のとおりです。

public class Flipcard extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardFront);
    layMain.setOnClickListener(this);
    Cursor cur;
    DbH db = null;
    TextView tv=(TextView) findViewById(R.id.TV_Word);
    TextView txtView=(TextView) findViewById(R.id.TV_CardNo);
    try {
        db=new DbH(this);
    } catch (IOException e2) {

        e2.printStackTrace();
    }
    try {
        db.createdatabase();
    } catch (IOException e) {

        e.printStackTrace();
    }
    db.opendatabase();
    cur=db.data();
    cur.moveToFirst();
    tv.setText(cur.getString(0));
    cur.close();
}
public void onClick(View v) {
Intent i=new Intent(this,Flipcard_back.class);
startActivity(i);
}

}

クリック時に呼び出される他のJavaファイルは次のとおりです。

 public class Flipcard_back extends Activity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_back);
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardRear);
    layMain.setOnClickListener(this);
}
public void onClick(View v) {
Intent i=new Intent(this,Flipcard.class);
startActivity(i);
}
}

問題は、私がアプリ開発の非常に初期の段階にあることです。現在、データベースを使用して最初のJavaファイルの2つのテキストビューを変更しようとしています。約1秒の遅れ。どうすれば修正できますか?私は何か間違ったことをしていますか?また、getstring(1)などを使用してすべての行を取得することはできません。なぜですか?列を1つずつ取得するにはどうすればよいですか?

4

2 に答える 2

1

ラグは、メインスレッドでデータベースにアクセスすることによって発生します。データベースを独自のスレッドで実行する必要があります。これは、プロセスとスレッドに関する開発者ガイドであり、全体像を示しています。次に、データベースにアクセスするための1つのアプローチとして、AsyncTaskのようなものを調べます。

データベースから結果が得られないということに関しては、に関連付けられているクラスを見ないとわかりませんdb。さらにヘルプが必要な場合は、そのコードとlogcatエラーを質問に含めてください。

編集

あなたが提供したエラーコードで、私は同様の質問と詳細な答えへのこのリンクを見つけました。

于 2012-04-21T21:15:16.553 に答える
0

sqlite + androidでの私の経験では、データベースを検索するときは最初は非常に遅いですが、その後は大量のデータを非常に高速に取得できます。ラグを回避したい場合は、代わりにファイルを使用してください。私の小さな経験は、辞書アプリWordlist Proの開発から来ています。そこでは、テキストファイルのデータベースが遅すぎた(そしてサイズが大きかった)ため、データベースを放棄しなければなりませんでした。

于 2012-04-21T22:53:47.760 に答える