Android:在后台使用SQLiteCursorSimpleCursorAdapter

Android:在后台使用SQLiteCursorSimpleCursorAdapter,第1张

概述我的问题与Android有关.我有以下代码(省略了不相关的部分):publicclassMyActivityextendsListActivity{protectedvoidonResume(){super.onResume();newUpdateTask().execute();}privateclassUpdateTaskextendsAsyncTask<Object,O

我的问题与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);        }    } }

这会导致RuntimeException-在实例化SimpleCursorAdapter的行上,“无法在未调用Looper.prepare()的线程内创建处理程序”.

我了解为什么会这样,只是不知道如何解决(将其保存在单独的线程中).我发现了这个线程:

http://groups.google.com/group/android-developers/browse_thread/thread/34d0069bb2de925e?fwc=2

但是我真的不明白答复.我没有用谷歌搜索任何
涉及sqliteCursor和AsyncqueryHandler的示例.

你们能帮忙吗?谢谢.

解决方法:

看起来实例化SimpleCursorAdapter必须在UI线程上进行.您可以通过让doInBackground()返回光标并在onPostExecute()中设置适配器来实现.

如果还没有,请参见Painless Threading.

总结

以上是内存溢出为你收集整理的Android:在后台使用SQLiteCursor / SimpleCursorAdapter全部内容,希望文章能够帮你解决Android:在后台使用SQLiteCursor / SimpleCursorAdapter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1092761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存