GreenDao异步加载所有的方法

我可以使用GreeDAOAsyncSession成功地异步插入行,如下所示:

 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); }