GreenDao异步加载所有的方法
我可以使用GreeDAO
的AsyncSession
成功地异步插入行,如下所示:
getMyObjectDao().getSession().startAsyncSession().insertOrReplaceInTx(MyObject.class, list);
如何异步将db中的所有对象加载到ArrayList中。 到目前为止,我已尝试下面的代码,但它不起作用:
1-
items = getBoxDao(c).getSession().startAsyncSession().loadAll(MyObject.class)
;
2-
@Override public void onAsyncOperationCompleted(AsyncOperation operation) { String operationIs = null; switch (operation.getType()) { case LoadAll: itemsList = BoxRepository.getAllBoxes(getApplicationContext());
您可以使用operation.getResult()
方法获取fetched arrayList,如下所示:
AsyncSession asyncSession = App.getInstance().daoSession.startAsyncSession(); asyncSession.setListener(new AsyncOperationListener() { @Override public void onAsyncOperationCompleted(AsyncOperation operation) { itemsList = (List) operation.getResult(); } }); asyncSession.loadAll(MyObject.class);
更新: BoxRepository
只是一个Helper类,它的getAllBoxes()
同步加载所有数据但你可以轻松添加另一个这样的方法,它异步加载所有数据:
public static void getAllBoxes(Context context, AsyncOperationListener listener) { AsyncSession asyncSession = App.getInstance().daoSession.startAsyncSession(); asyncSession.setListener(listener); asyncSession.loadAll(Box.class); }