将一种方法的输出传递给同一线程中的另一种方法

我在异步任务的 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

已经检查并用谷歌搜索但没有得到正确的解决方案。我想知道处理这种常见情况的最佳方法是什么。提前感谢您的帮助。


潇潇雨雨
浏览 96回答 3
3回答

元芳怎么了

你可以看看CompletableFuture API。您可以轻松地处理需要异步运行,也有任务,他们跑了一前一后,按照上面的步骤到下一个步骤的结果,与方法,如runAsync和thenApplyAsync。使用exceptionally,您还可以仅在前一个任务以异常结束时运行指定的任务。如果您主要处理并发,这是一个很棒的 API 并且非常有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java