任务完成后执行代码Azure移动服务和Android

时间:2014-07-23 15:22:10

标签: android android-asynctask azure-mobile-services

我正在使用Azure移动服务,我需要根据ID列表从表中获取电子邮件。我有一个方法,通过循环Id列表和每个项目来获取表格中的特定项目。但是在onComplete之前执行。这是我的代码:

private ArrayList<String> administratorsEmail = new ArrayList<String>();

public boolean getAdminsEmail(List<String> adminList)
{

    for(String ids : adminList)
    {
        UsersTable.lookUp(ids, new TableOperationCallback<Users>()
        {
            public void onCompleted(Users entity, Exception exception, ServiceFilterResponse response)
            {
                if (exception == null)
                {
                    administratorsEmail.add(entity.getEmail());
                }
            }
        });
    }

    //CODE HERE EXECUTES BEFORE ONCOMPLETE
}

我需要填写administratorsEmail列表。我需要在列表administratorsEmail完全填充后执行一些代码。但是我不能把代码放在onComplete方法中,因为它会执行与循环相同的时间。

我需要知道OnCompleted何时完成。任何机构都可以为此提出更好的建议或帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以为要处理的记录数量以及int counter运行代码时创建counter == totalRecords

public boolean getAdminsEmail(List<String> adminList)
{
int counter = 0;
int totalRecords = adminList.length();

for(String ids : adminList)
{
    UsersTable.lookUp(ids, new TableOperationCallback<Users>()
    {
        public void onCompleted(Users entity, Exception exception, ServiceFilterResponse response)
        {
            if (exception == null)
            {
                administratorsEmail.add(entity.getEmail());
                if (++counter == totalRecords) afterCompleted();
            }
        }
    });
}

}
private void afterCompleted() {...