Android完全退出应用程序
Android退出应用程序会调用finish(),但这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,只会销毁当前的Activity返回上一个Activity。当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序,但是这样比较麻烦。下面是一个比较好的方法:
首先要定义一个继承Application的类:
- public class ExitManager extends Application{
- private List<Activity> activityList=new LinkedList<Activity>();
- private static ExitManager instance;
- private ExitManager(){
- }
- public static ExitManager getInstance(){
- if (instance==null) {
- instance=new ExitManager();
- }
- return instance;
- }
- public void addActivity(Activity activity){
- activityList.add(activity);
- }
- public void exit(){
- for(Activity activity:activityList){
- if(!activity.isFinishing()){
- activity.finish();
- }
- }
- int id=android.os.Process.myPid();
- if(id!=0){
- android.os.Process
- .killProcess(id);
- }
- }
- }
其次要在每个Activity的onCreate方法中加入如下代码:
- ExitManager.getInstance().addActivity(this);
也就是将每个Activity加入到Activity容器中。最后,在实现退出应用程序的地方加入如下代码:
- ExitManager.getInstance().exit();