2017-06-18 19 views
0

私の英語は最善ではないので、事前に謝ります。メソッドの実行は非同期メソッドの応答に依存します

私の状況は、私はAndroidアプリを、次の開発していて、私は非同期タスクを持っている、とdoInBackground方法に次のコードを持っている:だから、方法 "getFirebaseUserChannelsを

@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; 
    } 

"は、応答でリストをスローする非同期メソッドであり、そのリストを使用する準備ができたらそれを評価して使用する必要があります。 ご存じのように、javaはasyncメソッドを実行し、が返るまでまで続きます。

すべての非同期メソッドの実行が終了するまで、「doInBackground」が実行を継続しないようにします。

だから、どうすればいいですか?どのようにこの状況を管理する最良の方法はありますか?

答えて

0

この状況を管理するにはどうすればよいでしょうか?

完全にAsyncTaskを取り除く。 AsyncTaskを実行するコードがあれば、単にgetFirebaseUserChannels()を呼び出してください。

関連する問題