0

Android 抱怨下面的代码需要调用 Looper.prepare。我曾尝试添加 Looper.prepare,但代码在第六次执行后崩溃,让我相信它并不像我想象的那么简单。任何建议将不胜感激。顺便说一句,我将这段代码包装在 AsyncTask 中,因为在执行查询时我需要一个进度微调器。如果有更简单的,请告诉我。

private class doSearch extends AsyncTask<String, String, Cursor> {

    @Override
    protected Cursor doInBackground(String... searchstring) {

        [...]           
        CursorLoader loader = new CursorLoader(SearchActivity.this, codes, projection, mWhere, null, null);
        Cursor cursor = loader.loadInBackground();

        return cursor;
}
4

2 回答 2

0

您已经在 AsyncTask 中。Async Task Loader 将创建另一个植根于您的线程池中的 AsyncTask。AsyncTask 必须在 UI 线程上构建。他们将使用它来获取所需的 Looper。如果您要自己编写一个异步任务并希望以串行方式消除此游标加载,请使用非异步游标检索方式。或者摆脱您的 AsyncTask 并扩展 CursorLoader 并覆盖 DeliverResult(Cursor) 方法以充当您的回调。这类似于 AsyncTask 中的 onPostExecute

于 2011-07-21T16:13:44.223 回答
0

这通常意味着您正在做一些与 UI 相关的事情或从另一个(后台)线程而不是主线程调用处理程序的 sendMessage 函数

于 2011-07-21T15:22:16.707 回答