将objective-c block-oriented api转换为android

时间:2013-01-02 13:46:21

标签: java android ios objective-c-blocks

我的任务是将iOS中的web服务层(完全用块编写)转换为Android类似的东西。由于Java还没有闭包,什么是合理的方法?

示例api调用:

if (![data.locationsAPI cityNamesForCity:self.searchBox.text
                              onSuccess:^(JSONRef * ref)
     {
         locations = [[ref valueForKey:@"cities"]arrayCopy];
         [self.searchTable reloadData];
         [self.hotelTable reloadData];

     } onFailure:^(IOError * error)
     {
         locations = nil;
         [self.searchTable reloadData];
     }])
{
    [self notReachableAlert];
}

在主线程上调用成功/失败块,而内部的api调用在后台线程中。

我可以使用匿名类做类似的事情,该类将传递给原始类,然后可以调度到某个方法来处理结果。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用模式委托 http://en.wikipedia.org/wiki/Delegation_pattern。传递采用某些方法的委托对象。获得一些结果后,使用结果值调用此方法。