5

私は sql lite を使用しており、通常は 1 つのテーブルに対してクエリを実行しています。メインUIスレッドからクエリを実行すると悪いですか?

ありがとうございました

4

4 に答える 4

11

場合によります。テーブルが非常に大きい場合、クエリの実行に時間がかかる可能性があり、アプリで顕著な遅延が発生する可能性があります。また、通常は1つのテーブルのみをクエリすると言うので、追加のテーブルでさらにクエリを実行できる可能性があります。

原則として、AsyncTasksを使用してバックグラウンドスレッドでクエリやダウンロードを行うなど、多くの作業を行います。これは、それほど時間がかからない場合でも、後で大規模な書き換えを行わずにアプリを拡張するための自由度が増すためです。

于 2012-09-19T17:58:01.620 に答える
4

はい、実際にはメイン UI スレッドからクエリを実行するのは良くありません。

http://android-developers.blogspot.com/2009/05/painless-threading.html

1 ~ 2 秒もかからない場合はそれほど悪くはありませんが、別のスレッドで実行することを常にお勧めします。

于 2012-09-19T17:59:31.480 に答える
2

Androidの記事「応答性のための設計」をお読みください

ネットワークやデータベース操作などの潜在的に長時間実行される操作、またはビットマップのサイズ変更などの計算コストの高い計算は、子スレッドで(またはデータベース操作の場合は非同期要求を介して)実行する必要があります。

この記事では、メインスレッドで高額な操作を実行すると、「アプリケーションが応答しません」エラーが発生し、OSがアプリを強制終了する可能性があることを引き続き説明しています。

したがって、これらの操作はメインスレッドで実行できますが、バックグラウンドスレッドを使用することをお勧めします。

于 2012-09-19T17:57:46.617 に答える
0

はい、クエリに時間がかからないように指定できます。それ以外の場合は、非同期タスクを使用することをお勧めします。

于 2012-09-19T17:58:08.250 に答える