>我有三个活动 - 活动 A,活动 B,活动 C 。活动 A 是启动器活动。从这个活动,我去活动B。
活动 B 和活动 C 的定义如下:
public class B extends C
public abstract class C extends BaseActivity
现在我想在完成活动 C 中的某个任务后在活动 B 中做一些事情。我已经在谷歌和堆栈溢出中搜索过。这让我想到了这个答案。
但是按照上面的答案调用函数 stateChanged(( 需要花费很多时间。有没有更快的方法可以做到这一点?
每个B
活动都是C
活动。因此,如果您在继承的C
中定义一个方法,即该方法是公共的或受保护的或在同一包中与 B 的包私有,则按如下方式覆盖该方法:
@Override
protected void method (){
super.method ();
myTaskAfterSuperMethodReturns ();
}
如果你正在更好地执行一些异步任务,你可以在类 B 中定义异步任务。
另一种方法是将类C
中的doSomething
定义为晦涩方法,并在B
中实现它。任务完成后呼叫doSomething
。使doSomething
抽象将迫使B
实现它。
当活动 C 中的任务完成时,可以使用事件总线库在活动 B 中触发事件
您还可以从另一个活动访问 MainActivity 的方法,如下所示:
主要活动.class
private static MainActivity mInstance;
public static MainActivity getInstance(){
return mInstance;
}
在 Oncreate 方法中初始化实例
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mInstance = this;
}
创建要在下一个活动中使用的方法
@Override
public void showData(){
//do something here
}
要访问它,只需从另一个活动调用
(MainActivity.getInstance()).showData()