私はコードをデバッグしましたが、sqlite クエリが AsynkTask スレッドを停止するようです:
Log.d(LOG_TAG, "Getting params");
Cursor c = null;
try {
String[] queryParams = new String[]{String.valueOf(commandQueueId), String.valueOf(DIRECTION_OUT)};
// ↓↓↓ STOPPING HERE ↓↓↓
c = dataSource.query(TABLE_USER_COMMAND, "queue_id = ? AND direction = ? AND _id > " + fromId, queryParams);
Log.d(LOG_TAG, "After query");
if (c.moveToFirst()) {
UserCommand command;
do {
// Something with cursor
} while (c.moveToNext());
}
} catch (Exception e) {
Log.e(LOG_TAG, "Error while querying", e);
} finally {
Log.d(LOG_TAG, "Finnaly executed");
if (null != c)
c.close();
}
"Getting params" 文字列のみを表示する LogCat で、何も表示されません (エラーも何も表示されません)。AsyncTask で実行されるコード、dataSource オブジェクトでは、すべてのメソッドが同期されます。UIスレッドクエリではうまく機能します。それは何でしょうか?