Android 从被调用方活动调用调用方活动

Android 从被调用方活动调用调用方活动,android,android-intent,Android,Android Intent,我有很多活动(比如活动A,B,C)调用单个活动(比如活动D)以获得结果(startActivityForResult(…)) 但是,在被调用方设置结果并完成之前,您希望根据被调用方活动(activityD)中的调用方活动执行一些操作 我要执行的任务需要使用调用活动的数据变量,因此现在我计划传递一个类似于以下内容的回调类: public interface myCallBack implements Seriabizable{ public void myMethod(); } 在启

我有很多活动(比如活动ABC)调用单个活动(比如活动D)以获得结果(
startActivityForResult(…)

但是,在被调用方设置结果并完成之前,您希望根据被调用方活动(activityD)中的调用方活动执行一些操作

我要执行的任务需要使用调用活动的数据变量,因此现在我计划传递一个类似于以下内容的回调类:

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);
现在被调用方活动(activityD)将执行以下任务:

myCallback.myMethod();
但这是正确的做法吗?跨活动传递回调类好吗?还有哪些其他选择

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


NB:

我不想将所需的数据从调用者传递给被调用者的原因是,任务所需的数据对于每个调用者活动都是完全不同的,而且有时会比较大。因此,我不想用这些数据变量来干扰被调用方的活动。

您的建议可能有效。然而,这看起来很复杂,不是一个好的做法

如果您只想通过accross活动传递数据,为什么不对要通过accross活动的数据使用
intent.putExtra


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

不,您可以通过Binder。。。但一般来说,活动之间的交流毫无意义(除了来回传递意图)。。。这样想:一次只能运行一个活动从未使用过活页夹我会阅读它,但你能给出总体情况吗?嘿,忘了活页夹吧。。。我提到了这一点,因为它是一个最接近接口的东西,可以通过Parcelable(intent)传递,它更适合IPC和服务其他android组件通信。。。只需使用startActivityForResult…但我已经在使用
startActivityForResult
。那为什么需要界面呢。。。根据结果(从被调用方返回)执行onActivityResults(调用方的)中的内容…这是有道理的,但必须为每个活动定义一个服务?这取决于具体情况。如果每个活动都执行不同的任务,则为“是”,否则为“否”。