【问题标题】:Android/Parse- How to handle multiple callbacks from ParseQueryAndroid/Parse-如何处理来自 ParseQuery 的多个回调
【发布时间】:2014-10-02 04:21:48
【问题描述】:

在开始我的 MainActivity 之前,我需要调用 4 个这样的查询。 我想知道如何处理在后台运行的多个回调,并在所有回调返回我想要的数据时启动 MainActivity。

谁能提供一些如何做到这一点的代码?

ParseQuery query = ParseQuery.getQuery("Ranking"); 
    query.findInBackground(new FindCallback() {
        @Override
        public void done(List list, ParseException e) {
            //do something
        }
    });

【问题讨论】:

    标签: android asynchronous android-asynctask callback parse-platform


    【解决方案1】:

    您不想等待显示您的活动,您可能会收到 ANR...但我假设您会显示“正在加载”消息或其他内容。

    对于您的多个回调,如果您有一组预定义的回调,您可以使用已检查的布尔标志或使用简单的计数器,然后检查回调中的任何一个。例如:

    myCallback.queryDone();

    然后:

    public myCallback implements MyCallback() {
        private static volatile int count = 0;
    
        public void queryDone() {
            count++;
            if (count == 4) {
                // start activity here
            }
        }
    }
    

    如果您有不确定数量的回调(例如,它可能是 3 或 10),那么您需要建立一个队列或使上面建议的系统更复杂以处理各种情况。

    【讨论】:

    • 不错的方法,但是请注意同步,这可能会导致条件永远不会满足,将计数器定义为成员和 volatile 在这种情况下应该这样做,这是一个更简单、更清洁的解决方案。
    • @Toguard - 好点,虽然我假设只会创建一个 myCallback ;但是,无论实施如何,您的观点都可以防止问题发生,因此我编辑了我的帖子。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 2012-12-30
    • 2021-11-01
    相关资源
    最近更新 更多