2013-10-21 38 views
0

我正在将iOS包装器从iOS移植到Android。在iOS包装中,我们有一个非常大的类,它包含所有可能的API函数。当我们调用函数时,我们将回调方法作为匿名函数传递。如何模仿在Android中传递函数作为参数

我想知道如何在android中做同样的事情。一种方法是让API类实现与AsyncTask调用onPostExecute的processFinish函数的接口,但根据调用哪个API函数,processFinish的实现将具有大量条件。我如何做到这一点,而没有做出所有这些条件?

+0

这似乎不太机器人为中心的多为像programmers.se设计模式的问题,但如果我是你的话我肯定也会这么做的一种OOP方式。有一个基础功能,可以被每种类型的API调用所覆盖,并且可以做它自己的事情。 –

+0

@KasraRahjerdi你重写一个基本函数到底是什么意思?如何确定哪个api调用正在调用基本函数? – Chris

+0

研究Runnables –

回答

0

传递回调中的一个类似方法是你可能用于Android上的api实现,包括'消息循环器'和'处理程序'。

处理程序可以内嵌使用,就像函数作为回调函数传递的方式一样。从这个异步Http example可以看出,处理程序实现可以是非常健壮的对象(可运行)。

一般来说,你可以把你的api分成对象层次结构,当你在android中获取消息时,你传递适当的对象,当处理程序被回调时,它可以调用对象(你的api类)之前提供给处理程序。

快速浏览一下'定义handler',如果它看起来可能适合您,那么请关注上一个链接中使用http的高级示例。将所有httpclient行为替换为您的api对象层次结构。

+0

感谢您的意见。看起来Handlers和AsyncTasks有些相互排斥,我想写尽可能少的与线程相关的代码,因此如果可以的话,坚持使用AsyncTasks。 – Chris

0

我相信,我一直在寻找的答案是匿名函数

相关问题