方法执行取决于异步方法的响应

时间:2017-06-18 21:25:00

标签: java android asynchronous android-asynctask

我的英语不是最好的,所以我提前为此道歉。

我的情况如下,我正在开发一个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”在所有异步方法执行结束之前不会继续执行。

那么,我怎么能这样做?管理这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

  

管理这种情况的最佳方法是什么?

完全摆脱AsyncTask。有任何代码要执行AsyncTask,只需致电getFirebaseUserChannels()