2017-06-18 40 views
0

我的英語不是最好的,所以我提前爲此道歉。方法執行取決於異步方法的響應

我的情況下面,我正在開發一個Android應用程序,我有一個異步任務,並在doInBackground方法有以下代碼:

@Override 
    protected Boolean doInBackground(String... params) { 

     getFirebaseUserChannels(new ResultListener<List<Channel>>() { 
      @Override 
      public void finish(List<Channel> firebaseUserChannels) { 
       if (firebaseUserChannels.isEmpty()) { 

        getFirebaseChannels(new ResultListener<List<Canal>>() { 
         @Override 
         public void finish(List<Channel> firebaseChannels) { 
          saveChannelsSQLDatabase(firebaseChannels); 
          saveChannelsFirebaseDatabase(firebaseChannels); 
         } 
        }); 

       } else { 
        saveChannelsSQLDatabase(canalesUsuarioFB); 
       } 
      } 
     }); 

     return true; 
    } 

因此,該方法「getFirebaseUserChannels 「」是一個異步方法,在響應拋出列表,並且當該列表準備好使用它時,我必須評估它並使用它。 但是,如你所知,java執行異步方法並繼續,直到返回

我希望「doInBackground」不會繼續執行,直到所有的異步方法執行結束。

那麼,我該怎麼做?處理這種情況的最好方法是什麼?

回答

0

管理這種情況的最佳方法是什麼?

完全擺脫AsyncTask。有任何代碼將執行AsyncTask只需致電getFirebaseUserChannels()