应用程序完全退出

前言

  在Android应用程序的完全退出有点麻烦,系统没有提供完全退出的api。

退出单Activity程序

  Android系统中提供了以下的方式来退出单Activity的应用程序,如下所示

  

Process.killProcess(Process.myPid());
System.exit(0);

退出多Activity程序

  上一小节提到了退出单个Activity的方式,然而实际开发中很少有单个Activity的应用程序,而多个Activity的应用程序完全退出又不能直接退出,下面的方式通过记录各个打开的Activity,然后分别将各个Activity finish掉,这样就间接的实现了完全退出的功能。具体代码如下

  

package com.luoaz.founsys.util;

import android.app.Activity;
import java.util.LinkedList;
import java.util.List; 

public class SysApplication extends Activity {
	//用来记录打开的Activity
	private List<Activity> mList = new LinkedList();
	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);
	} 

	/**
	 * 退出所有在记录中的Activity
	 * */
	public void exit() {
		try {
			for (Activity activity : mList) {
				if (activity != null)
					activity.finish();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.exit(0);
		}
	}
}

后记

  由于Android没有提供直接退出应用程序的api,那么只能通过其他方式变相实现此功能,上述是实现这个功能的一种方式,但不是唯一方式。

时间: 2024-08-26 12:27:33

应用程序完全退出的相关文章

Linux C程序异常退出怎么办——core文件帮你忙

想必你一定遇到过Linux下程序异常退出的问题,异常退出貌似有一种神奇的魔力,会让你神经突然紧张.不要怕,Linux是很强大的,在程序退出的时候,会在可执行文件所在的目录生成一个core文件,它很好地记录了一些神秘而又必要的东西,帮助你定位到错误的根源,想想以前面试的时候人家闻到core文件,我答不上来,你说面试官会怎样想,那么就来说说core文件. core文件实际上就是一个内存映象同时加上一些调试信息. 首先,你得打开系统的core文件生成开关吧,终端中输入ulimit -c命令,若显示0表

独辟蹊径之android程序完全退出的一种途径

最近做一个项目时,意外发现了一种可以让android程序完全退出的一种途径,遥想当年为了找到一种有效地途径让android程序完全退出时的窘迫,不由得有些感慨.这里不敢独享,和大家分享一下,也是抛砖引玉,希望有大牛出来继续探讨一下这个问题. 方法很简单,其实就是一层窗户纸,知道了,就明白了.用jni调用linux系统调用exit即可.下面给出具体实现: package com.example.bitmaptest; import android.util.Log; public final cl

C# 窗口和程序的退出

Application.Exit(); // 通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口. // 由 .NET Compact Framework 支持. Form.Close(); //关闭窗口(主程序还没有退去) 要点: 1.程序从Application.Run(new   Form1)开始,到Application.Exit()结束,销毁窗体,回收资源. 这之中,如果你打开了1个窗体,两个语句就是一样,如果打开多个,比如你Form1里又开了form2,form3等等,

iphone按home键后,正在运行的程序是否退出了呢?

是否一直有个疑问,当iphone手机正在运行一个APP,如果按Home键后,那么原来正在运行的程序还在运行吗?如果开发过ios程序,可能不是问题,如果没有开发过的,可能会疑惑了,我就简单的说一下.以几个问题的形式来说明,以正在运行QQ为例. 1.为什么按home键后,长时间不操作,再启动qq的话,会重新运行qq(没有回到原来的状态)? 答:iphone实际上是伪后台,按home键后,程序就退出了.所以我们iphone中使用的程序一般都没有退出键. 试想一下,如果程序有退出键的话,那么当程序无响应

关于C#程序无故退出

今天我发现一种情况,分享下 我一个对象是用多线程写的代码,主程序调用完后有时候也会退出,catch不到.我在原对象的接口里面加上lock之后就ok了!我的理解是该对象申请的资源没释放完毕,加lock后释放完该资源再执行其他就好了 关于C#程序无故退出,布布扣,bubuko.com

android捕获程序异常退出

今天看到迅雷动漫里面一个CrashHandler 的类,我猜是崩溃处理类.进去一看,果然.顺便学习一下. Android系统的"程序异常退出",给应用的用户体验造成不良影响.为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理.通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可. 代码: public class CrashHandler implements Un

Android企业级程序完全退出的解决方案

一.问题描述 在平常开发的过程中可以发现,很多开发者对于程序的退出都没有去认真的解决.一般要么是一个简单的finish(只是退出当前的activity),要么是其他的方法,比如: 1.第一种方法:首先获取当前进程的id,然后杀死该进程: android.os.Process.killProcess(android.os.Process.myPid()): 2.第二种方法:终止当前正在运行的Java虚拟机,导致程序终止:System.exit(0); 3.第三种方法:强制关闭与该包有关联的一切执行

Windows应用程序的退出

Windows应用程序的退出 flyfish OnOK OnCancel EndDialog的关系 VC\atlmfc\src\mfc\dlgcore.cpp文件中 void CDialog::OnOK() { if (!UpdateData(TRUE)) { TRACE(traceAppMsg, 0, "UpdateData failed during dialog termination.\n"); // the UpdateData routine will set focus

程序异常退出 却没有产生core文件

程序异常退出  却没有产生core文件 http://www.cnblogs.com/my_life/articles/4107333.html