Android实现退出整个应用程序代码;

来源:互联网 发布:windows 2008 r2 编辑:程序博客网 时间:2024/04/30 02:40

工作上需要实现双击退出应用程序的效果,在网上看到有什么System.exit(0);,运行下来,然而这并不能实现退出应用程序,而只是退出当前activity;和finish效果差不多;

后来有一种思路就是,每打开一个activity,就把当前activity保存在一个List当中,若需要退出整个应用,就是将集合clear一下就可以实现;

public class MyApplication extends Application {        private static Stack<Activity> activityStack;    private static MyApplication singleton;    @Override    public void onCreate()    {        super.onCreate();        singleton=this;    }    // Returns the application instance    public static MyApplication getInstance() {        return singleton;    }    /**     * add Activity 添加Activity到栈     */    public void addActivity(Activity activity){        if(activityStack ==null){            activityStack =new Stack<Activity>();        }        activityStack.add(activity);    }    /**     * get current Activity 获取当前Activity(栈中最后一个压入的)     */    public Activity currentActivity() {        Activity activity = activityStack.lastElement();        return activity;    }    /**     * 结束当前Activity(栈中最后一个压入的)     */    public void finishActivity() {        Activity activity = activityStack.lastElement();        finishActivity(activity);    }    /**     * 结束指定的Activity     */    public void finishActivity(Activity activity) {        if (activity != null) {            activityStack.remove(activity);            activity.finish();            activity = null;        }    }    /**     * 结束指定类名的Activity     */    public void finishActivity(Class<?> cls) {        for (Activity activity : activityStack) {            if (activity.getClass().equals(cls)) {                finishActivity(activity);            }        }    }    /**     * 结束所有Activity     */    public void finishAllActivity() {        for (int i = 0, size = activityStack.size(); i < size; i++) {            if (null != activityStack.get(i)) {                activityStack.get(i).finish();            }        }        activityStack.clear();    }    /**     * 退出应用程序     */    public void AppExit() {        try {            finishAllActivity();        } catch (Exception e) {        }    }}
然后创建一个baseActivity,在oncreate方法中调用
    MyApplication.getInstance().addActivity(this);
在onDestroy方法中调用
MyApplication.getInstance().finishActivity(this);
最后写一个双击退出程序的方法;
/** * 重复按下返回键退出app方法 */public  void exitBy2Click() {Timer tExit = null;if (isExit == false) {isExit = true; // 准备退出String doubleClick = (String) getString(R.string.double_click_back);Toast.makeText(this, doubleClick, Toast.LENGTH_SHORT).show();tExit = new Timer();tExit.schedule(new TimerTask() {@Overridepublic void run() {isExit = false; // 取消退出}}, 2000); //如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务} else {GosApplication.getInstance().AppExit();}}



0 0
原创粉丝点击