将回调函数传递给不同的Activity

时间:2015-12-03 23:09:25

标签: android asynchronous

我正在尝试在异步任务(与云服务器通信)中执行回调到不同的Activity方法。因为我的设计会在不同的Activity中调用相同的异步任务。

现在我正在使用需要检查活动名称的方法。有没有办法在调用期间将通用方法函数(如C代码)传递给“LoginAccount”?

public void loginAccount(final Activity activity, final String email, final String password) { 

然后启动异步任务   .......   在这里返回异步任务

    @Override
    public void onSuccess(Object value) {

          String strName = activity.getClass().getSimpleName();

          if (strName.equals("MainActivity"))
                ((MainActivity)activity).updateDeviceName();
          else if (strName.equals("LoginActivity"))
                ((LoginActivity)activity).processLoginResult();
    } }
}

3 个答案:

答案 0 :(得分:0)

您不能在java中将函数作为参数传递,但是您最接近这种行为的方法是传递Runnable对象。

Runnable | Android Developers

答案 1 :(得分:0)

为什么你的任务看起来非常不同?您应该只创建两个不同的类来扩展AsyncTask<>。然后在每个Activity中使用相应的AsyncTask。

答案 2 :(得分:0)

我最终使用不同的方法来解决这个问题。我创建了一个" Service"在后台处理云活动。每个Activity都绑定到Service并使用Messenger来触发Async方法。

这种情况下,我已经阻止了Activity被销毁并且回调消失了。在应用程序关闭之前,服务不会更改。