如何检查内部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线程查询数据库是不好的做法?
答案 0 :(得分:1)
强烈建议在单独的线程中进行数据库查询,但如果您查询的数据非常小,那么您可以在UI线程中执行此操作而不会产生延迟。