我在异步任务的 doinBackround 方法中有两种方法。第一种方法用于从云数据库中检索值。第二种方法用于在 msqlite 中保存值。我的问题是当第二个方法被执行时,第一个方法将无法在需要时产生值,因此 null 被传递。请看一下代码片段。 @Override protected Void doInBackground(Param... params) { try { List<Object> objectlist = mAsyncTaskFireDB.getobjectlist(params[0]); // Output of this method to be passed into 2nd method. Object[] listarray = new Object[objectlist.size()]; for(Integer i=0;i<objectlist.size();i++) { listarray[i] = objectlist.get(i); } mCat_messageDao.insertAll(listarray); // 2nd method : Value of 1st method should come here however getting null here已经检查并用谷歌搜索但没有得到正确的解决方案。我想知道处理这种常见情况的最佳方法是什么。提前感谢您的帮助。
3 回答
元芳怎么了
TA贡献1798条经验 获得超7个赞
你可以看看CompletableFuture API。
您可以轻松地处理需要异步运行,也有任务,他们跑了一前一后,按照上面的步骤到下一个步骤的结果,与方法,如runAsync和thenApplyAsync。使用exceptionally,您还可以仅在前一个任务以异常结束时运行指定的任务。
如果您主要处理并发,这是一个很棒的 API 并且非常有用。
添加回答
举报
0/150
提交
取消