如何检查内部UI是否存在表中的数据?通过使用Loader或只是查询()?

时间:2015-10-31 13:22:12

标签: android android-sqlite android-contentprovider loader

如何检查内部UI是否存在表中的数据? 通过使用Loader或只是查询()?

哪种方式更好?

1)使用Loader。

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        getActivity().getSupportLoaderManager().restartLoader(POPULATE_CATEGORY_LIST_VIEW_LOADER, null, this);

    } 


        @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

        switch (loader.getId()) {
            case POPULATE_CATEGORY_LIST_VIEW_LOADER:

                if (!data.moveToFirst()) {

                    // load data from server and store data to db

                }

                break;
            default:
                break;
        }
    }

2)使用来自UI的getContentResolver()。query()

        Cursor locationCursor = getContext().getContentResolver().query(
                MenuContract.CategoryEntry.CONTENT_URI,
                new String[]{MenuContract.CategoryEntry._ID},
                null,
                null,
                null);

        if(!locationCursor.moveToFirst()) {
            // load data from server and store data to db
        }

我只需要检查数据是否存在id db。然后,如果表中没有数据,则从服务器加载数据并将其放入适配器,否则只需将数据放入适配器。 如何正确使用装载机?

据我所知,在两种方式中我们都需要等到数据库给出答案。所以也许只是查询Cursor就足以完成这项任务,或者直接从UI线程查询数据库是不好的做法?

1 个答案:

答案 0 :(得分:1)

强烈建议在单独的线程中进行数据库查询,但如果您查询的数据非常小,那么您可以在UI线程中执行此操作而不会产生延迟。