在查找了很多资料和长期的实践之后。
总结出了一套确实可行的Android2.2完全退出应用的方法。
先说明一下,我需要达到的效果:
1,所有Activity被销毁。
2,Application被销毁。
3,退回手机桌面。
4,再次进入系统时,必须由统一的入口进入,完成程序必要的初始化操作。
开始正文,按顺序讲解需要实现代码
1,自定义Application,并在Manifest.xml中注册使用。
<application android:name=".app.CustomApplication">
<!--ellipsis-->
</application>
2,Manifest.xml添加权限
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
3,自定义Application中定义
/** 保存所有已创建的Activity */
private List<Activity> activities;
/** 初始化 */
if ( activities == null ) {
activities = new Vector<Activity>();
}
/**将Activity加入*/
public synchronized void register(Activity activity) {
activities.add(activity);
}
/**Activity被销毁时,从Activities中移除*/
public synchronized void unregister(Activity activity) {
if ( activities.size() != 0 ) {
activities.remove(activity);
if ( !activity.isFinishing() ) {
activity.finish();
}
} else {
Debug.l("No Activity in pool! unregister");
}
}
/**
* 移除当前所有已创建的Activiy,
* 并逐个销毁
*
* @author ashtray
* @creaetime 2011-8-10 下午01:46:36
*/
public synchronized void removeAll() {
if ( activities.size() != 0 ) {
Activity activity = null;
Iterator<Activity> iterator = activities.iterator();
while (iterator.hasNext()) {
activity = iterator.next();
if ( !activity.isFinishing() ) {
activity.finish();
iterator.remove();
}
}
} else {
Debug.l("No Activity in pool!");
}
}
整体思路就是,将程序中所有的Activity交给全局性的Application管理。
4,在Activity的生命周期方法中添加如下代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 获取Application
app = (CustomApplication) getApplication();
app.register(this);
}
@Override
protected void onDestroy() {
app.unregister(this);
super.onDestroy();
}
在创建时将自身加入到activties,销毁时从activities中移除。
5,完全退出程序时的方法
/**
* 完全退出本应用程序
*
* @author ashtray
* @creaetime 2011-8-26 上午11:21:29
* @param app
*/
public static void exit(CustomApplication app) {
/** 执行完全退出程序的操作 */
// 清除所有已创建的Activity
app.removeAll();
System.gc();
// 跳转至home界面
Intent home = new Intent(Intent.ACTION_MAIN);
home.addCategory(Intent.CATEGORY_HOME);
home.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
app.getApplicationContext().startActivity(home);
// 销毁程序进程,并退出
Process.killProcess(Process.myPid());
System.exit(10);
}
说明已在注释中。
分三个步骤:
移除所有Activity、跳转至手机Home界面、杀死应用进程并退出,这样可以保证Application被销毁。
经测试,这三个步骤缺一不可。否则不能达到预期的需求。
lagunarock原创文章,欢迎转载,转载请注明原文作者及文章url。
分享到:
相关推荐
### Android 2.2 通讯录操作源代码详解 #### 一、概述 本文将详细介绍一个基于Android 2.2版本的通讯录操作示例源代码。该代码实现了读取、添加、删除以及更新联系人的功能。对于学习Android平台上的通讯录操作来...
VMware 安装 Android 2.2-x86 图文教程 VMware 是一个功能强大的虚拟机软件,允许用户在单个物理机器上运行多个操作系统。今天我们将学习如何在 VMware 中安装 Android 2.2-x86 操作系统。 首先,需要下载 Android...
《Android 2.2 刷机教程》是一个详细的指导文档,旨在帮助HTC Desire用户进行刷机操作,从制作金卡、获取root权限到升级到Android 2.2系统。以下是对教程主要内容的详细说明: **一、制作金卡** 制作金卡是Android...
这个"Android代码-基于Android2.2照相机Demo可以直接放到项目里使用.rar"压缩包提供了一个适用于Android 2.2(API级别8)的相机功能演示示例。让我们深入探讨这个Demo包含的知识点,以及如何在实际开发中应用这些...
9. **释放资源**:在完成拍照或应用退出时,必须释放相机资源,防止内存泄漏。通过调用`Camera.release()`来关闭照相机。 10. **JavaApk源码说明.txt**:这个文件可能是对源码的简要说明,包括如何导入项目、关键类...
总之,实现完全退出Android应用程序通常涉及到对Activity生命周期的理解,以及可能的自定义事件监听。尽管这并不总是最佳实践,但在某些场景下是必要的。"ColseApp"项目可能提供了一个示例,展示了如何在多种Android...
在本文中,我们将详细探讨如何在VM虚拟机上安装Android 2.2并配置虚拟SD卡。VMware(VM)虚拟机是一款强大的软件,它允许你在一台计算机上运行多个操作系统,而无需安装额外的硬件。Android 2.2,也称为Froyo,是一...
### Android程序完全退出的方法 #### 一、引言 在Android开发过程中,有时我们需要让程序完全退出,而不是简单地关闭当前活动(Activity)。这在某些特定的应用场景下尤为重要,例如当用户点击“退出”按钮时,...
在Android开发过程中,有时我们需要实现一个“一键退出”功能,即用户点击某个按钮后能够迅速且干净地关闭整个应用程序。这不仅可以提升用户体验,还能确保程序资源得到及时释放。本文将详细介绍一种在Android中实现...
这是在Android 2.2及更高版本中推荐使用的关闭应用程序的方法之一。 #### 2. 使用`Process.killProcess` 对于简单的进程终止,可以直接调用`killProcess`方法,但要注意这种方法会立即结束当前进程,可能导致数据...
【Android移动应用设计与开发】课程主要讲解了如何构建Android应用程序,从创建项目到实际案例分析,涵盖了Android开发的基础和实践。以下是对课程内容的详细阐述: ### 2.1 创建Android项目 #### 2.1.1 创建...
UMcall - 免费通话软件: UMcall是基于互联网络免费通话和收发消息的软件, 适用于2G/3G/WiFi 网络,双方安装即可通话。... 1、修改通话过程中按home键退出不能回到通话界面的问题 2、优化通话质量。
- **挑战**:在Android 2.2及以上版本中,直接结束整个应用变得复杂。 - **策略**: - **抛异常强制退出**:这种方法会导致程序崩溃,通常不建议使用。 - **记录打开的Activity**:每次启动新Activity时进行记录...
在Android移动应用开发中,活动(Activity)是构成应用程序的核心组件之一,主要负责展示用户界面并处理用户交互。本章详细介绍了活动的概念、基本操作、Intent的使用以及在活动之间传递数据的方法。 2.1 活动是...
在Android应用开发中,Activity是用户界面的基本单元,用于展示应用程序的不同屏幕或“视图”。当我们需要在不同的Activity之间进行切换时,为了提供更丰富的用户体验,可以加入动画效果。这不仅能够使应用看起来...
Android 2.2版本中,开发者面临的一个挑战是如何人为地强制关闭应用程序。这是因为Android系统通常会管理应用的进程,以优化内存使用和用户体验。在默认情况下,即使用户退出应用程序,系统可能仍然保留其后台进程,...
根据提供的信息,我们可以总结出以下有关 Android 界面效果的关键知识点: ### 一、界面过渡动画(Transition Animation) #### 1.1 `...这些知识点对于提高 Android 应用程序的用户体验至关重要。
同年,Android 2.2版本的发布,是Android在企业级市场的重要跨越。该版本增加了智能密码策略、远程擦除功能,以及对Exchange日历的兼容,使得Android在商务应用方面有了显著提升。 到了2010年9月,市场研究机构...
2. 同年,Android 2.2版本(Froyo)发布,引入了对企业级功能的支持,如智能密码策略、远程擦除、Exchange日历兼容和自动更新等,进一步推动了Android在商业领域的应用。 3. 2010年9月,市场研究公司Gartner预测,...