我在異步任務的 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
提交
取消