是否可以异步从SQLite数据库中获取记录

时间:2014-12-20 11:44:44

标签: android sqlite asynchronous

我知道我可以在一个单独的线程中执行我的数据库命令以防止“无响应”(例如带有大量记录的表中的SELECT命令)并将填充的列表传递给主线程。
< / p>

这是一个获取记录的示例,由于记录数量可能需要大约两秒钟,现在我想知道,有没有办法以异步方式从表中获取记录而不是“查询”方法。

public Word[] getWords(int rid) {

    Word[] returnVal = null;

    db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_WORDS, COLUMNS_WORDS, "RID=?",
            new String[] { String.valueOf(rid) }, null, null, null, null);

    if (cursor.moveToFirst()) {

        returnVal = new Word[cursor.getCount()];

        do {
            // populate returnVal

        } while (cursor.moveToNext());
    }

    cursor.close();

    return returnVal;
}

1 个答案:

答案 0 :(得分:3)

使用AsyncTask类可以执行此操作。创建另一个超出AsyncTask的类,并在重写doInBackground方法中调用您的方法

class SQLAsyncTaskextends AsyncTask<String, String, String[]> {

        @Override
        protected String doInBackground(String... urls) {
           return getWords(rid); // Pass rid here
        }

        @Override
        protected void onPostExecute(String[] result) {
           //Do something with result
        }

 }