私は使用しており、クエリが完了するAsyncQueryHandlerと呼び出されます。onQueryComplete
私の質問: onQueryCompleteUI スレッドで呼び出されますか?
バックグラウンドでクエリを実行することはわかっています。
AsyncQueryHandlerインスタンス化された場所は重要ですか?(UI スレッドでインスタンス化された場合は、UI スレッドonQueryCompleteで呼び出されることを意味します)。
私は使用しており、クエリが完了するAsyncQueryHandlerと呼び出されます。onQueryComplete
私の質問: onQueryCompleteUI スレッドで呼び出されますか?
バックグラウンドでクエリを実行することはわかっています。
AsyncQueryHandlerインスタンス化された場所は重要ですか?(UI スレッドでインスタンス化された場合は、UI スレッドonQueryCompleteで呼び出されることを意味します)。
onQueryCompleteUI スレッドで呼び出されますか?
それは呼び出し元のスレッドで呼び出されます...つまり、AsyncQueryHandler.
AsyncQueryHandlerインスタンス化された場所は重要ですか?
AsyncQueryHandlerHandlerに対して非同期クエリ (または挿入、更新、削除) を実行しContentResolver、結果を呼び出しスレッドに返す のサブクラスです。Handlerは、メイン UI スレッド以外のスレッドに関連付けることができますContentResolver。. AsyncQueryHandlerしたがって、別のスレッドからの呼び出しも許可する必要があります。
そうは言っても、そうするのは、いくつかの理由から、おそらくあなたが望むものではありません:
を別のスレッドでインスタンス化するAsyncQueryHandlerと、後続のコールバックはすべてその呼び出しスレッドに返されます。これは、メインの UI スレッド (レイアウトの作成とタッチ イベントの受信を担当するスレッド) と同期する簡単な手段を提供しないため、通常は望ましくありません。
既に別のスレッドにいるため、 への呼び出しContentResolverは UI スレッドに関してすでに非同期になっています。
ちなみに、 のドキュメントでAsyncQueryHandlerはこれらの点については何も言及されていませんが、ソース コードを読めばほとんどのことがわかります。Handler(直接の基本クラス)のドキュメントでは、その背後にある理論も説明されています。