我已经调试了代码,似乎 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();
}
LogCat 只显示“获取参数”字符串,然后什么都没有(没有错误或任何东西)。在 AsyncTask 中执行的代码,dataSource 对象的所有方法都同步了。在 UI 线程查询中效果很好。会是什么?