从被调用者活动

时间:2015-10-22 08:55:05

标签: android android-intent

我有很多活动(比如活动 A B C )调用单个活动(比如活动 D )获得结果(startActivityForResult(..))。

但是在被调用者设置结果并结束之前,想根据被调用者活动中的调用者活动(活动 D )做一些事情。

我想要做的任务需要使用调用活动的数据变量,所以现在我打算传递一个类似于此的回调类:

public interface myCallBack implements Seriabizable{

    public void myMethod();

}

从每个调用者到被调用者启动活动;

intent.putExtra(CALL_BACK_OBJECT_KEY, new myCallBack(){

    @Override
    public void myMethod(){
        //code that uses instance variables of caller class
    }
}); 

当然回调是可串行化的。

myCallback = getIntent().getSerializableExtra(CALL_BACK_OBJECT_KEY);

现在,被叫方活动(活动 D )将执行以下任务:

myCallback.myMethod();

但这是正确的做法吗?跨越活动传递回调类是否合适?还有哪些其他选择?

或者有没有办法直接调用调用者活动的方法?在这种情况下,我将强制调用者活动实现MyCallBack接口。

NB:
我不想将调用者所需的数据传递给被调用者的原因是,任务所需的数据对于每个调用者活动而言都是完全不同的,并且还有一些时间很大。所以我不要用这些数据变量搞乱被调用者的活动。

1 个答案:

答案 0 :(得分:0)

你的建议可能有用。然而,它看起来很复杂,不是一个好习惯。

如果您只想传递活动数据,为什么不将intent.putExtra与您希望通过活动传递的数据一起使用?

如果您要传递的数据太大或太复杂,无法像这样传递,也许您应该以另一种方式实现您的应用程序。例如,您可以使用Service。您将拥有三项服务(每项活动一个,或用例)。这些服务将实现同一类的通用接口或herit。您的呼叫行为(A,B或C)将启动相应的服务,服务将存储数据。当您启动活动D时,此活动将与服务绑定。然后,她将能够完全访问服务中的所有数据或对象。

相关问题