Android应用程序退出的一种方案

原创 2013年12月02日 16:06:20

思路:把所有Activity 都收集到一个 List<Activity> 链表中,在退出的时候只需要使用for循环遍历一遍链表即可。

首先新建一个SysApplication.java文件

/**
*使用单例保存所有的Activity到链表
*/
public class SysApplication extends Application{
	private List<Activity> mList = new LinkedList<Activity>(); 
    private static SysApplication instance; 
 
    private SysApplication() {   
    } 
    public synchronized static SysApplication getInstance() { 
        if (null == instance) { 
            instance = new SysApplication(); 
        } 
        return instance; 
    } 
    // 添加当前 Activity  
    public void addActivity(Activity activity) { 
        mList.add(activity); 
    } 
    //退出App时调用
    public void exit() { 
        try { 
            for (Activity activity : mList) { 
                if (activity != null) 
                    activity.finish(); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            System.exit(0); 
        } 
    } 
    //内存不足时直接调用系统的垃圾回收机制
    @Override 
    public void onLowMemory() { 
        super.onLowMemory();     
        System.gc(); 
    } 	
}
然后再每个Activity的Oncreate()方法中调用这里的addActivity()方法,
SysApplication.getInstance().addActivity(this);
这样就将当前的activity加入到链表中了。

下面说一下程序退出,分两种情况:

一种是按一下返回键弹出一个对话框,

public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		switch (keyCode) {
		case KeyEvent.KEYCODE_BACK:
			showExitAlert();
			break;

		default:
			break;
		}
		return false;
	}

	/**
	 * 确认退出
	 */
	public void showExitAlert() {
		AlertDialog.Builder build = new AlertDialog.Builder(this);
		build.setTitle("警告").setMessage("确定要退出吗?")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						SysApplication.getInstance().exit();

					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						

					}
				}).show();
	}
另一个种是连续按两次返回键退出程序,

private long mExitTime;
public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			if ((System.currentTimeMillis() - mExitTime) > 2000) {
				Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
				mExitTime = System.currentTimeMillis();

			} else {
				SysApplication.getInstance().exit();
			}
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}





Android 完全退出当前应用程序的四种正确方法

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方...
  • changsimeng
  • changsimeng
  • 2017年01月03日 17:30
  • 2155

Activity退出的几种方式

在android中使用:[activityname].this.finish(); 只是退出了activity的堆栈中,要真正的退出程序在手机cpu中的运行,当应用不再使用时,通常需要关闭应用,可以...
  • a15286856575
  • a15286856575
  • 2016年03月14日 09:10
  • 3447

Android退出应用最优雅的方式(改进版)

由于应用启动退出之后,会在应用中反复跳转页面,在这个过程中,一部分页面可能会驻留的内存中,导致无法退出应用的情况,今天我们就来讲如何以优雅的方式退出应用...
  • soul_code
  • soul_code
  • 2016年01月04日 09:22
  • 16517

android应用程序启动时短暂白屏或者黑屏的解决处理方案

android应用程序启动时短暂白屏或者黑屏的解决处理方案 标签: androidapp启动白屏splash页面白屏 2016-04-12 16:30 5123人阅读 评论(0) 收藏 举...
  • w690333243
  • w690333243
  • 2017年06月23日 06:58
  • 234

Android应用程序互保方案

在android系统中,到内存不足时系统会主动杀死那些占用内存较多的应用程序,另外像手机管家这种软件也会杀死我们的应用程序。可是由于业务的需求,我们需要应用程序一直在后台运行而不被干掉,因此需要一套可...
  • a253664942
  • a253664942
  • 2016年01月11日 23:20
  • 1141

android应用程序中对于ANR主线程超时不响应导致强制关闭的解决方案

ANR(Application Not Responding)定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Ap...
  • yuanyl
  • yuanyl
  • 2016年03月11日 14:50
  • 1564

Android应用程序内换肤解决方案(二)之测试Demo

转载请注明出处:http://blog.csdn.net/droyon/article/details/9427651 实现思路:通过更换主题来实现应用程序内部换肤。 [java] vie...
  • CJ_star
  • CJ_star
  • 2015年01月04日 14:30
  • 702

完退出Android应用程序例子

  • 2012年05月21日 00:58
  • 55KB
  • 下载

退出android应用程序Demo

  • 2014年04月23日 17:33
  • 36KB
  • 下载

完全退出Android应用程序的四种方法

退出形式:    1) 菜单->退出    2) 按back键,提示再按一次退出    3) 按back,弹出退出提示对话框    4) 按back直接退出   Android程序有很多A...
  • u012861467
  • u012861467
  • 2015年11月30日 21:09
  • 304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android应用程序退出的一种方案
举报原因:
原因补充:

(最多只允许输入30个字)