ANDROID 完美退出APP的实例代码
程序员文章站
2023-01-01 23:30:20
大家都知道 android 的 activity 是存着历史栈的,比如从 a -> b -> c,c 完成 finish 后回到 b,把所有的activity...
大家都知道 android 的 activity 是存着历史栈的,比如从 a -> b -> c,c 完成 finish 后回到 b,把所有的activity 都 finish了,程序就自然退出了。 当然在 finish 的同时也需要是否自己程序的其他资源。所以需要想个办法把 activity 给存起来。然后在程序退出的地方调用它们的 finish()方法。
使用全局变量。对了,第一个想到的就是继承 application,代码入下:
public class agentapplication extends application {
private list<activity> activities = new arraylist<activity>();
public void addactivity(activity activity) {
activities.add(activity);
}
@override
public void onterminate() {
super.onterminate();
for (activity activity : activities) {
activity.finish();
}
ondestroy();
system.exit(0);
}
}
然后在 activity oncreate 的时候来调用 addactivity (),有人可能想到这个application需要在所有的 activity oncreate的时候都使用,需要做一个单例实例。其实根本不需要。在 activity 中使用 this.getapplication() 就可以了。
最后在你需要推出程序的地方调用 application.onterminate() 就可以了。记住:super.onterminate() 必须调用,代码中的 ondestroy()是我自己的释放其他资源的方法,不是系统的。
运行以上代码后,在logcat 中会出现一行提示:
process 包名 (pid xxxxx) has died. 证明你的程序退出了。
使用全局变量。对了,第一个想到的就是继承 application,代码入下:
复制代码 代码如下:
public class agentapplication extends application {
private list<activity> activities = new arraylist<activity>();
public void addactivity(activity activity) {
activities.add(activity);
}
@override
public void onterminate() {
super.onterminate();
for (activity activity : activities) {
activity.finish();
}
ondestroy();
system.exit(0);
}
}
然后在 activity oncreate 的时候来调用 addactivity (),有人可能想到这个application需要在所有的 activity oncreate的时候都使用,需要做一个单例实例。其实根本不需要。在 activity 中使用 this.getapplication() 就可以了。
最后在你需要推出程序的地方调用 application.onterminate() 就可以了。记住:super.onterminate() 必须调用,代码中的 ondestroy()是我自己的释放其他资源的方法,不是系统的。
运行以上代码后,在logcat 中会出现一行提示:
process 包名 (pid xxxxx) has died. 证明你的程序退出了。