从在onLoadFinished光标填充小部件()(Populate widgets from a

2019-07-28 22:08发布

我想知道如何使用CursorLoader来填充屏幕上的小窗口。 所有在线的例子是仅适用于使用适配器来完成这项工程。 我需要的是更新从游标并在UI线程,并没有崩溃,有时因为在我的屏幕意见的可靠方法StaleDataException或光标被停用突然。 这是我目前的做法,但我仍然收到来自用户的一些崩溃报告。

@Override
    public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
        CursorLoader loader = null;

        switch (id) {
            case LOADER_ID_DATA:
                loader = new CursorLoader(...);
                break;
        }

        return loader;
    }

    @Override
    public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
        handler.post(new Runnable() {

            @Override
            public void run() {
                if (getActivity() == null)
                    return;

                updateView(cursor);
            }
        });
    }

    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {
    }

一个解决办法是,直接检索所有光标领域内onLoadFinished和他们都传递到处理程序来填充UI线程上的小窗口。 但是,这是丑陋的,因为我可以在光标很多价值观。 我很想找到应对这一切的可靠的无碰撞的方式。

Answer 1:

询问关于#Android的开发后SimonVTreadme帮助我得到这条底线。

没有什么,指出onLoadFinished将在UI线程上调用,所以从理论上讲,你应该使用一个Handler就像在劝雷托的书。 然而,在使用时CursorLoader (这是迄今为止最常见的情况),你可以在几乎保证onLoadFinished将在UI线程调用。



文章来源: Populate widgets from a cursor in onLoadFinished()