这是每个APP开发中都会遇到的问题。要完全退出APP,需要结束所有的Activity。在网上看到的一个主要方法是用一个继承自Application的类存放所有打开的Activity,退出APP时,遍历所有Activity一一关闭。然而笔者实践发现,这种方法最后还会遗留某些Activity,原因可能是因为当前所在的Activity结束后中断了结束所有Activity过程的执行。
解决方法很简单,退出APP时,先结束所有其它的Activity,最后结束当前所在的Activity。代码如下:
AgentApplication.java
import android.app.Activity;
import android.app.Application;
import java.util.ArrayList;
import java.util.List;
public class AgentApplication extends Application {
private List<Activity> activities = new ArrayList<>();
private static AgentApplication instance = null;
private AgentApplication() {
}
public synchronized static AgentApplication getInstance() {
if (instance == null) {
instance = new AgentApplication();
}
return instance;
}
public void addActivity(Activity activity) {
activities.add(activity);
}
@Override
public void onTerminate() {
super.onTerminate();
}
public void finishAllActivities(Activity activity) {
for (Activity activity1 : activities) {
if (activity1 != activity) {
activity1.finish();
}
}
activity.finish();
System.exit(0);
}
}
使用单例模式设计AgentApplication类。退出APP时,调用其finishAllActivities(Activity activity)方法,参数是当前所在的Activity。
本文介绍了一种确保APP能够被完全退出的方法。通过使用单例模式设计的AgentApplication类,可以实现遍历并关闭所有已开启的Activity,最终结束当前Activity,确保APP没有残留进程。
1984

被折叠的 条评论
为什么被折叠?



