您的位置:首页 > 移动开发 > Android开发

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

2016-07-30 17:01 441 查看
工作上需要实现双击退出应用程序的效果,在网上看到有什么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 = activ
4000
ityStack.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();}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: