這是每個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。