安卓抱怨下面的代码需要调用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;
}发布于 2011-07-21 23:22:17
它通常意味着您正在做一些与UI相关的事情,或者从另一个(后台)线程而不是主线程调用处理程序的sendMessage函数
发布于 2011-07-22 00:13:44
您已经在AsyncTask中。异步任务加载器将创建另一个根在线程池中的AsyncTask。AsyncTasks必须在UI线程上构造。他们会用这个来抓取所需的Looper。如果您打算自己编写一个异步任务,并且希望串行地执行此游标加载,那么请使用非异步游标检索方法。或者去掉光标,扩展CursorLoader,重写deliverResult( AsyncTask )方法作为回调函数。这类似于AsyncTask中的onPostExecute
https://stackoverflow.com/questions/6778443
复制相似问题