完成另一项活动的活动

dun*_*lli 3 android activity-finish android-activity

我有3个活动A,B和C. A导致B导致C.我希望能够在A和B之间来回移动但是我想在C开始后完成A和B. 我知道如何通过意图启动C时关闭B但是如何在C启动时关闭A?

Gra*_*eme 13

在您的onCreate()方法中,将静态实例分配给变量以创建Singleton:

public static ActivityA instance = null;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    instance = this;
}

@Override
public void finish() {
    super.finish();
    instance = null;
}
Run Code Online (Sandbox Code Playgroud)

然后在C:

public void onCreate(Bundle savedInstanceState) {
    if(ActivityA.instance != null) {
        try {  
            ActivityA.instance.finish(); 
        } catch (Exception e) {}
    }
}
Run Code Online (Sandbox Code Playgroud)

(重复以上代码为B和A)

我会说这不优雅,必然会引入奇怪的生命周期错误.

如果你可以调整你的要求会更好 - 如果你不能,你可以使用一个活动并将A,B和C改为Fragments

我会建议广播,但据我所知,你不能在"非恢复"活动上有实例级广播接收器.

使用a Service绑定到活动似乎有点矫枉过正 - 但你可能想要考虑如果上述方法不起作用.

祝好运!