Jar*_*rek 3 database multithreading android background adapter
我的问题与Android有关.我有以下代码(省略了非相关部分):
public class MyActivity extends ListActivity {
protected void onResume() {
super.onResume();
new UpdateTask().execute();
}
private class UpdateTask extends AsyncTask<Object, Object, ListAdapter> {
protected ListAdapter doInBackground(Object... params) {
SQLiteCursor cursor = db.getSomeData();
startManagingCursor(cursor);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, ..., cursor, ..., ...);
return adapter;
}
protected void onPostExecute(ListAdapter result) {
listView.setAdapter(result);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致RuntimeException - "无法在实例化SimpleCursorAdapter的行中创建未调用Looper.prepare()的线程内的处理程序".
我理解为什么会发生这种情况,我只是不知道如何修复它(将它保存在一个单独的线程中).我找到了这个帖子:
http://groups.google.com/group/android-developers/browse_thread/thread/34d0069bb2de925e?fwc=2
但我真的不明白答复.我没有谷歌任何涉及SQLiteCursor和AsyncQueryHandler的例子.
你能帮忙吗?谢谢.
看起来像SimpleCursorAdapter在UI线程上实例化必须发生的事情.您可以通过doInBackground()返回cursor并设置适配器来实现onPostExecute().
如果您还没有,请参阅无痛线程.
| 归档时间: |
|
| 查看次数: |
1914 次 |
| 最近记录: |