`
helloandroid
  • 浏览: 275579 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
107f8db3-b009-3b79-938a-dafddb49ea79
Android腾讯微博客户...
浏览量:95641
社区版块
存档分类
最新评论

android2.2程序退出

阅读更多
做程序退出的时候,始终退出不了,网上找了很多方法。

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
						am.restartPackage(getPackageName());
//不行啊

android.os.Process.killProcess(android.os.Process.myPid());//也不行


最后用了这个办法:
package com.android.cist.util;

import java.util.LinkedList;
import java.util.List;

import android.app.Activity;
import android.app.Application;

public class ApplicationUtil extends Application {
	private List<Activity> activityList = new LinkedList<Activity>();
	private static ApplicationUtil instance;

	private ApplicationUtil() {
	}

	// 单例模式中获取唯一的ApplicationUtil实例
	public static ApplicationUtil getInstance() {
		if (null == instance) {
			instance = new ApplicationUtil();
		}
		return instance;

	}

	// 添加Activity到容器中
	public void addActivity(Activity activity) {
		activityList.add(activity);
	}

	// 遍历所有Activity并finish

	public void exit() {

		for (Activity activity : activityList) {
			activity.finish();
		}
		System.exit(0);
	}
}

@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			final AlertDialog isExit = new AlertDialog.Builder(this).create();
			isExit.setTitle("系统提示");
			isExit.setMessage("确定要退出吗");
			DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					switch (which) {
					case AlertDialog.BUTTON1:
						ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
						am.restartPackage(getPackageName());
						/*ApplicationUtil.getInstance().exit();*/
						//android.os.Process.killProcess(android.os.Process.myPid());
						break;
					case AlertDialog.BUTTON2:
						isExit.cancel();
						break;
					default:
						break;
					}
				}
			};
			isExit.setButton("确定", listener);
			isExit.setButton2("取消", listener);
			isExit.show();
			return false;
		}
		return false;
	}

在每个界面的onCreate()方法中添加ApplicationUtil.getInstance().addActivity(this);



分享到:
评论
3 楼 oudioppa 2012-03-06  
onCreate可能会被调用多次,所以可能会造成List中添加多个,需要进行相应的判断和处理
2 楼 helloandroid 2011-10-11  
zhenzxie 写道
    请问,如果在调用System.exit(0)之前没有把所有的activity都Finish掉,会怎么样.??谢谢啦。

程序不能完全退出,栈顶的Activity界面还在显示状态下
1 楼 zhenzxie 2011-10-10  
    请问,如果在调用System.exit(0)之前没有把所有的activity都Finish掉,会怎么样.??谢谢啦。

相关推荐

    VMware安装Android2.2-x86图文教程

    我们还可以使用键盘快捷键来快速地前进、后退和退出应用程序。 VMware 安装 Android 2.2-x86 图文教程可以帮助我们快速地安装和使用 Android 系统,并提供了一些实用的技巧和设置项来提高使用体验。 VMware 安装 ...

    Android代码-基于Android2.2照相机Demo可以直接放到项目里使用.rar

    这个"Android代码-基于Android2.2照相机Demo可以直接放到项目里使用.rar"压缩包提供了一个适用于Android 2.2(API级别8)的相机功能演示示例。让我们深入探讨这个Demo包含的知识点,以及如何在实际开发中应用这些...

    VM虚拟机安装Android_2.2和设置虚拟SD卡

    2. 在“安装客户机操作系统”向导中,选择“安装程序光盘映像文件”并浏览到下载的android-x86-2.2-generic.iso文件。 3. 接下来,选择“其他”作为操作系统类型,然后选择“FreeBSD”作为版本,尽管它不是完全准确...

    android 完美退出程序

    ### Android完美退出程序详解 #### 一、引言 在Android开发过程中,有时我们需要实现一个“一键退出”功能,即用户点击某个按钮后能够迅速且干净地关闭整个应用程序。这不仅可以提升用户体验,还能确保程序资源...

    完退出Android应用程序例子

    在Android操作系统中,退出应用程序并不是一个直接明了的过程,因为Android设计时考虑了资源管理和用户体验。通常情况下,用户点击返回键或应用切换器中的“关闭”按钮,应用并不会立即结束,而是进入后台运行状态。...

    Android程序完全退出的方法

    ### Android程序完全退出的方法 #### 一、引言 在Android开发过程中,有时我们需要让程序完全退出,而不是简单地关闭当前活动(Activity)。这在某些特定的应用场景下尤为重要,例如当用户点击“退出”按钮时,...

    Android程序设计基础

     作为基于Linux的开源手机平台,Android包括一部手机工作所需的全部软件——操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权障碍。谷歌公司与开放手机联盟合作开发了Android,这个联盟...

    android关闭应用程序

    这是在Android 2.2及更高版本中推荐使用的关闭应用程序的方法之一。 #### 2. 使用`Process.killProcess` 对于简单的进程终止,可以直接调用`killProcess`方法,但要注意这种方法会立即结束当前进程,可能导致数据...

    Android中人为改变程序生命周期的研究.pdf

    Android 2.2版本中,开发者面临的一个挑战是如何人为地强制关闭应用程序。这是因为Android系统通常会管理应用的进程,以优化内存使用和用户体验。在默认情况下,即使用户退出应用程序,系统可能仍然保留其后台进程,...

    原创android界面效果全汇总.pdf

    根据提供的信息,我们可以总结出以下有关 Android 界面效果的关键知识点: ### 一、界面过渡动画(Transition Animation) #### 1.1 `...这些知识点对于提高 Android 应用程序的用户体验至关重要。

    Android001基于安卓的手机通讯录管理系统+毕业论文+开题报告+任务书+外文翻译等资料

    程序测试软件: Elcipse + Android2.2以上sdk版本 数据库: Android自带的SQLite数据库 系统功能设计: 用户进入手机通讯管理软件后,会看到联系人列表界面。联系人列表界面主菜单中包括添加联系人、搜索联系人、...

    Android NDK翻译之 NDK-GDB.html

    此外,确保已安装对应版本的SDK,如Android 1.5 r4、Android 1.6 r3、Android 2.1 r2和Android 2.2 r1。 当满足所有条件后,可在命令行中进入项目目录并运行`$NDK/ndk-gdb`命令开始调试。如果遇到错误,检查adb是否...

    android activity 动画切换

    在Android应用开发中,Activity是用户界面的基本单元,用于展示应用程序的不同屏幕或“视图”。当我们需要在不同的Activity之间进行切换时,为了提供更丰富的用户体验,可以加入动画效果。这不仅能够使应用看起来...

    Android精简面试总结

    - **挑战**:在Android 2.2及以上版本中,直接结束整个应用变得复杂。 - **策略**: - **抛异常强制退出**:这种方法会导致程序崩溃,通常不建议使用。 - **记录打开的Activity**:每次启动新Activity时进行记录...

    图解android发展历史

    同年,Android 2.2版本的发布,是Android在企业级市场的重要跨越。该版本增加了智能密码策略、远程擦除功能,以及对Exchange日历的兼容,使得Android在商务应用方面有了显著提升。 到了2010年9月,市场研究机构...

    Android_fr.pdf

    - **Android SDK**:Android SDK 包含了一系列的工具和库文件,用于构建、调试和部署 Android 应用程序。 #### 3.2 配置开发工具 - **配置 Eclipse 和 ADT**:在 Eclipse 中安装 ADT 插件,以便能够使用 Android ...

    Android基础教程

     《Android基础教程(第3版·修订版)》是一部关于Android开发的基础教程,采用Pragmatic系列图书一贯由浅入深、循序渐进的方式讲解了Android程序设计的核心概念和技术。书中不仅结合数独游戏开发案例形象生动地...

    android视频播放器实训报告.pdf

    本实训报告主要围绕Android平台下的视频播放器进行,旨在深化Java语言和Android应用程序开发的实践理解。Android应用程序开发基于Java语言,通过本次实训,学生不仅能巩固Java语言的理论知识,还能提升Android应用...

    android系统的搭建

    ##### 2.2 安装Android Studio - 双击下载好的安装包,按照提示完成安装过程。 - **注意事项**: - 在安装过程中,可以选择SDK的安装路径,避免默认安装到C盘,以免占用过多空间。 - Android Studio内置了Android...

    最新Android面试题.pdf

    在Android 2.2及以上版本,直接结束应用的方法受到限制。一般不推荐使用killProcess()或System.exit(),因为它们可能导致数据丢失和用户体验问题。通常建议通过正常关闭Activity栈的方式退出应用。对于需要全局退出...

Global site tag (gtag.js) - Google Analytics