Android/Parse-如何处理来自 ParseQuery 的多个回调

Posted

技术标签:

【中文标题】Android/Parse-如何处理来自 ParseQuery 的多个回调【英文标题】:Android/Parse- How to handle multiple callbacks from 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
        
    );

【问题讨论】:

【参考方案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 ;但是,无论实施如何,您的观点都可以防止问题发生,因此我编辑了我的帖子。谢谢

以上是关于Android/Parse-如何处理来自 ParseQuery 的多个回调的主要内容,如果未能解决你的问题,请参考以下文章

如何处理来自 Presenter 的 Datagrid 列的事件?

Core Data + iCloud 如何处理来自云端的数据更新

如何处理来自显示视频的网页的响应流?

如何处理来自 API 调用的 ios 数据

你如何处理来自 AJAX 调用的错误?

如何处理来自 XMLHttpRequest 的八位字节流