2017-06-18 41 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()