有没有比接口或处理程序更快的方法来创建回调?

时间:2015-05-18 12:20:52

标签: android design-patterns

我只想检查是否有更简单的方法来执行此操作。

如果我有一些通用的ASyncTask并且它已经完成了,我想将成功的布尔值传递给原来的调用者。通常我只使用一个方法void onSuccess(boolean success);在自定义AsyncTask类中创建一个接口 调用者可以实现它等等。

我只是觉得它使用迷你接口使项目变得混乱。

我也可以传递一个处理程序,但是我必须为这个目的创建一个处理程序,这通常感觉就像#34;只是为了这个目的而有点太多的代码"。

我可以传递一个runnable,但我必须在一个线程上触发它,这可能会造成麻烦。

我想要在asynctask完成时执行调用对象的方法。在目标C中,我可以传递一个"块"代码,也许在Android中有类似的东西。

这是一个理论问题,没有紧迫感,只有好奇心。

2 个答案:

答案 0 :(得分:2)

您可以将event bus合并到您的应用中,例如GreenRobot's EventBusOTTO或其他可用的应用,但这仍然需要一些工作。我个人仍然没有看到在我的项目有意义的情况下创建接口和内容的问题。

答案 1 :(得分:0)

我首先想到的是lambdas,但是因为Android不支持Java 8,这可能是一个问题。

如果你只需要lambda而不是Java 8中的其他新东西,你可以看一下: https://hakanyamanyar.wordpress.com/2014/07/08/using-java-8-lambda-expressions-in-android-developer-tools/

他基本上使用了一个名为gradle-retrolambda的gradle依赖项,它允许你在Android中使用lambdas。我虽然没有试过这个。

除了使用Interfaces之外,可能适用于您的用例的其他内容可能是EventBus或Square.io的Otto。它们都基于发布/订阅事件模式。我已经尝试过EventBus,它很容易使用并且效果很好。