Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。
1. Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()) //获取PID
System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出
2. 任务管理器方法
首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上
3. 根据Activity的声明周期
3. 我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口
Intent intent = new Intent();
intent.setClass(Android123.this, CWJ.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出。
4.自定义一个Actiivty 栈,道理同上,不过利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。代码如下:
public class ScreenManager {
private static Stack activityStack;
private static ScreenManager instance;
private ScreenManager(){
}
public static ScreenManager getScreenManager(){
instance=new ScreenManager();
}
return instance;
}
//退出栈顶Activity
public void popActivity(Activity activity){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
//获得当前栈顶Activity
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
//将当前Activity推入栈中
public void pushActivity(Activity activity){
activityStack=new Stack();
}
activityStack.add(activity);
}
//退出栈中所有Activity
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity=currentActivity();
break;
}
break;
}
popActivity(activity);
}
}
}
分享到:
相关推荐
Java 应用程序窗口关闭的六种方法 Java 应用程序窗口关闭是指在 Java 应用程序中关閉窗口的操作。以下是六种常见的 Java 应用程序窗口关闭方法: 1. 使用 JFrame 的 enableEvents 和 processWindowEvent 在 Java ...
### Java关闭窗体的六种方法详解 在Java中,我们经常会遇到需要处理窗口关闭的情况。例如,在用户尝试关闭窗口时执行某些清理操作或者退出应用程序等。本文将详细介绍六种在Java中关闭窗体的方法,并对每种方法进行...
本标题主要介绍了使用BREW工具将应用灌入手机的方法,这是一种常见的手机应用安装方法。BREW是 Qualcomm 公司开发的一种手机应用开发平台,通过使用BREW工具,可以将应用安装到手机中。 描述:应用灌入手机方法-...
本文将详细探讨应用程序的关闭方法以及如何在这些设备上有效地利用这些方法,以提升设备性能和用户体验。 一、应用程序的运行状态 在手持式电子装置上,应用程序通常处于以下几种状态: 1. 运行状态:应用程序...
对于触摸式移动终端,快速关闭后台应用通常有以下几种方法: 1. **任务管理器**:大多数操作系统都内置了任务管理器或应用管理器,用户可以通过这个功能查看正在运行的应用并选择关闭。在Android中,用户可以长按...
本文将深入探讨一种新型的双进程守护应用保活方法,并通过提供的"单进程守护DEMO"进行详细阐述。 首先,我们要理解"常驻内存"的概念。常驻内存是指程序在启动后,即使用户将其后台化或关闭,仍然保持在内存中运行,...
.NET框架提供了多种方式来退出应用程序,每种方法适用于不同的场景,具有不同的特性和效果。本文主要探讨了.NET Windows应用程序退出的五种常见方法,并详细分析了它们之间的差异。 首先,`Form.Close`方法用于关闭...
本文将深入探讨在不同Android版本下关闭应用程序的方法、权限需求以及最佳实践。 ### 关闭应用程序的方法 #### 1. 使用`ActivityManager` 通过`ActivityManager`,开发者可以重启或终止一个包中的所有进程。这在...
但这仍然需要配合其他方法(如`finish()`)一起使用,以确保在所有Activity都关闭后退出应用。 ```xml android:noHistory="true"> ``` 5. 利用广播接收器: 还可以创建一个全局广播接收器,当接收到特定的退出...
这里,我们将详细探讨16种不同的方法来关闭VB中的窗口,这些方法可以根据具体的应用场景和需求选择使用。 1. **Form.Hide**: 这是隐藏而不是完全关闭窗口的方法,窗口对象仍然在内存中,可以通过再次调用Show方法...
本文将详细介绍三种有效的方法来清除这些烦人的广告。 **方法一:使用安全软件屏蔽广告** 1. **安装并启用广告拦截功能**:Android平台上有很多安全软件提供广告拦截服务,如LBE安全大师、360手机卫士、腾讯手机...
以下将详细讲解四种ASP实现这一功能的方法。 **方法一:使用OWC(Office Web Components)** OWC是微软提供的Office Web组件,允许在Web环境中与Office应用程序进行交互。通过OWC,可以在服务器端创建Excel对象,...
在实际应用中,根据需要,你还可以考虑使用更安全的`CloseMainWindow()`方法,该方法尝试通过发送WM_CLOSE消息来礼貌地请求进程关闭,而不是直接强制结束。如果进程没有响应,再考虑使用`Kill()`方法。
Springboot 应用程序启动和关闭时完成某些操作 Springboot 框架提供了多种方式来实现应用程序启动和关闭时完成某些操作,其中包括使用 ApplicationListener 接口、CommandLineRunner 和 ApplicationRunner 等方式。...
三、应用平台清除工具的使用方法 在使用应用平台清除工具时,需要选择相应的清理参数然后执行清理平台的功能。具体来说,有四种清理参数可供选择: 1. 清理平台组件:如果当前客户端本地环境中的应用平台组件有...
本文档主要围绕“应用程序关闭方法、装置、存储介质和电子设备”这一主题,详细阐述了在电子政务环境中如何优化应用程序的关闭流程,确保数据的安全性,以及利用合适的存储介质和电子设备提升整体系统性能。...
4. **权限管理**:系统会考虑卸载应用的权限,确保卸载后不会留下安全隐患,例如关闭不再需要的权限,防止被其他应用滥用。 5. **用户界面优化**:提供清晰易懂的用户界面,让用户在卸载应用时能了解可能的影响,...
当服务器关闭或者Web应用被卸载时,Servlet会被销毁。 在实际应用中,我们还需要了解如何在Web应用的部署描述符(Web.xml)中配置Servlet,包括设置Servlet的URL映射、初始化参数、过滤器等。此外,Servlet 3.0及...
1. 不友好的停止方式:服务通常通过服务控制管理器停止,相比直接关闭应用程序,操作相对复杂,可能对非技术人员不友好。 2. 特殊应用程序问题:有些应用程序设计时未考虑作为服务运行,可能会有异常行为,例如依赖...