Android 主动退出

首先要创建一个一个单例

这个单例的作用就是管理所有的Activity

因为要想退出就必须关闭所有的Activity

system.exit(0)只能关闭当前的Activity

所以才需要建一个单例来存储所有的Activity

比如新建一个ActivityCollector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class ActivityCollector extends Application {

private List<Activity> activityList = new LinkedList<Activity>();

private static ActivityCollector instance;

private ActivityCollector() {
}

public static ActivityCollector getInstance() {
if(null == instance) {
instance = new ActivityCollector();
}
return instance;
}

@Override
public void onCreate() {
super.onCreate();
}

//添加Activity到容器中
public void addActivity(Activity activity) {
activityList.add(activity);
}

//遍历所有Activity并finish
public void exit() {
for(Activity activity:activityList) {
activity.finish();
}
activityList.clear();
}
}

紧接着就是尽量把所有的Activity都放到一个数组里面

第一种方法

就是建一个基类

然后直接在基类里面的onCreate方法里面直接添加一次即可

1
2
3
4
5
6
7
8
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 添加Activity到堆栈
ActivityCollector.getInstance().addActivity(this);
}
}

然后其他Activity直接继承BaseActivity即可

这种适合于Activity比较多的情况

如果Activity比较少的话也可以直接在每个onCreate方法里面直接添加

1
ActivityCollector.getInstance().addActivity(this);

然后就是退出了

只需要在退出的地方

1
ActivityCollector.getInstance().exit();