`

Activity完全退出应用程序

 
阅读更多

android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activity。当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序。但这样比较麻烦,而且逐个返回的体验并不友好。

我常用的一种方法是自己定义一个类似Activity栈的东西(我用的是LinkedList<Activity>),把每一个Activity执行oncreate()的时候都加入到这个list,当要完全退出的时候就遍历这个list,循环删除。

代码如下:

package com.tarena.exit.model;
import java.util.LinkedList;
import android.app.Activity;
import android.os.Bundle;

public class BaseActivity extends Activity {
	public static LinkedList<Activity> allActivitys = new LinkedList<Activity>();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		allActivitys.add(this);
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		allActivitys.remove(this);
	}
	public static void finishAll(){
		for (Activity activity : allActivitys) {
			activity.finish();
		}
		allActivitys.clear();
		 //这个主要是用来关闭进程的, 光把所有activity finish的话,进程是不会关闭的
		System.exit(0);  
//		android.os.Process.killProcess(android.os.Process.myPid()); 
	}
}

 以后每写一个Activity就让它extends BaseActivity 即可。如果需要完全退出,调用 BaseActivity.finishAll();即可。

 

 

这个写法有个局限。因为java中类是单继承。如果一个Activity需要extends TabActivity ,那它就不能继承BaseActivity了。

下面看另一种方法:原理和之上的方法差不多。

package com.tarena.exit.model;

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

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

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

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

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

	public void exit() {
		// 遍历所有Activity并finish()
		for (Activity activity : activityList) {
			activity.finish();
		}
		System.exit(0);
	}
}

 

参考原文:http://www.yoyong.com/archives/199

 

分享到:
评论

相关推荐

    Android应用开发多个activity完全退出程序方法

    在用户想要退出应用时,简单地结束当前Activity并不足以完全关闭应用,因为后台可能还有其他Activity处于栈顶等待恢复。因此,我们需要一种策略来确保所有Activity都被正确关闭,以便完全退出程序。 在Android中,...

    Activity管理类,用于Activity管理和应用程序退出

    Activity管理类,用于Activity管理和应用程序退出

    Android 完全退出程序,关闭所有Activity

    在Android应用开发中,完全退出程序意味着结束所有与应用程序相关的活动(Activity)并释放系统资源。用户通常期望点击“退出”按钮后,整个应用程序能够完全关闭,而不是仅仅停留在后台运行。下面我们将详细讨论...

    安卓安装卸载相关-Android中应用程序Activity管理类用于Activity管理和应用程序退出。.zip

    本资源包主要关注Android中的Activity管理和应用程序的退出操作。 首先,ActivityCollector是一个可能包含在压缩包中的类,它的作用可能是收集并管理多个Activity实例。在Android开发中,我们有时需要跟踪或控制...

    退出程序提示,退出程序后关闭所有activity

    当用户完成某项任务或者希望完全退出应用时,通常会希望看到一个确认提示,并在确认后关闭所有已打开的Activity。 首先,我们来理解Activity的生命周期。每个Activity都有一个生命周期,包括创建(onCreate())、...

    android 完全退出应用程序实现代码

    在Android的默认行为中,用户可以通过点击后退键或者调用`finish()`方法来关闭单个Activity,但这并不意味着整个应用程序会完全退出,特别是当有多个Activity在栈中时。下面将详细介绍如何实现从任何Activity完全...

    退出android应用程序Demo

    在Android开发中,退出应用程序是一个常见的需求,尤其是在某些特定的应用场景下,用户可能希望完全关闭应用,而不是简单地退回到后台。本示例"退出Android应用程序Demo"将讲解如何实现这个功能,涉及到的关键知识点...

    Android 应用程序多Activity跳转之后退出整个程序

    在Android应用程序开发中,Activity是用户界面的基本单元,它代表了应用中的一个屏幕或操作流程。多Activity跳转是常见的应用场景,例如用户在登录、注册、浏览商品等不同页面之间切换。然而,当用户完成一系列操作...

    Android中实现再按一次返回键退出应用程序

    如果在这2秒内再次按下返回键,那么我们就认为用户确实想要退出应用,此时执行finish()方法来结束当前Activity,从而退出应用程序。 以下是一个简单的ExitActivity示例代码: ```java public class ExitActivity ...

    android 如何完全退出程序

    当需要退出应用程序时,则调用`ExitApplication.getInstance().exit()`,该方法会遍历所有已添加的Activity并调用它们的`finish()`方法,确保每个Activity都被正确关闭,从而实现应用程序的完全退出。 #### 实现...

    完全退出程序的方法.zip

    2. **强制退出**:要完全退出应用程序,开发者通常会在主Activity中添加一个菜单项或按钮,触发`finishAffinity()`方法。此方法会结束当前Activity及其所有父Activity,使用户回到最近的非该应用的Activity。然而,...

    android 完全退出程序

    在退出应用时,可以使用一个特殊的Intent启动系统设置,让用户选择关闭应用。例如,可以创建一个BroadcastReceiver监听特定的Intent,并在接收到Intent时执行退出操作。 5. **后台服务与广播接收器** 如果应用包含...

    Android利用Intent启动和关闭Activity

    在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity之间传递数据,实现应用内部或应用间的交互...

    怎样完全退出android程序

    如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,...

    退出整个应用程序

    在Android开发中,有时候我们需要实现一种功能:当用户执行特定操作时,比如点击退出按钮,能够一次性关闭所有打开的Activity并退出应用程序。这种方式在一些需要快速释放资源、彻底结束程序的应用场景中较为常见。...

    Android完全退出应用demo

    在Android开发中,完全退出应用程序通常指的是关闭所有与应用相关的活动(Activities)和释放系统资源。这不仅是用户体验的一部分,也可能在某些情况下是必要的,比如在内存紧张时优化系统性能。以下是一个关于如何...

    Android应用源码完全退出程序的方法.zip

    在Android应用开发中,完全退出程序是一个常见的需求,特别是在用户希望彻底关闭应用并释放系统资源时。本资料包“Android应用源码完全退出程序的方法.zip”聚焦于如何在Android应用程序中实现这一功能。以下是关于...

    ANDROID 应用完全退出

    然而,有时开发者或用户可能希望应用程序能够完全退出,以防止某些资源泄露或内存占用过高。本文将探讨如何在Android应用中实现完全退出,以及解决引用Context未释放导致的OOM(Out of Memory)问题。 首先,理解...

    Android中一键退出应用程序

    在Android系统中,由于其设计原则,通常不鼓励开发者实现一键退出应用的功能,因为系统会自动管理应用程序的内存资源。然而,用户有时可能有需求快速退出应用,这就涉及到如何在Android程序中实现这一功能。本篇文章...

Global site tag (gtag.js) - Google Analytics