在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的activity,并不能杀死所有的activity,为了完美达到此效果,接下来通过一个案例实现:

一、使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity.

MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作.

/**
* 完全退出应用的Activity
* @author KiWi
*/
public class MyApplication extends Application { private List<Activity> activitys = null;
private static MyApplication instance; public MyApplication() {
activitys = new LinkedList<Activity>();
} /**
* 单例模式中获取唯一的MyApplication实例
*/
public static MyApplication getInstance(){
if(null == instance){
instance = new MyApplication();
}
return instance;
} /**
* 添加Activity到容器中
*/
public void addAcitivity(Activity activity){
if(activitys != null && activitys.size() > 0){
if(!activitys.contains(activity)){
activitys.add(activity);
}
}
else{
activitys.add(activity);
}
} /**
* 遍历所有Activity并finish
*/
public void exit(){
if(activitys != null && activitys.size() > 0){
for (Activity activity : activitys) {
activity.finish();
}
}
System.exit(0);
}
}

 二、在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中

MyApplication.getInstance().addActivity(this);

三、在需要结束所有Activity的时候调用exit方法

MyApplication.getInstance().exit();

Android完全退出activity的更多相关文章

  1. android 安全退出 activity

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 定义一个 活动 的基础类, 每次打开一个 活动,就记录下来. 退出时,关闭每一个 活动. ...

  2. Android 退出Activity

    在一个Process或一个处理线程中退出Activity可以用context来退出,如下: ((Activity)context).finish(); Android程序有很多Activity,比如说 ...

  3. 【Android】退出运行了多个Activity的应用

    日常开发APP的时候,绝大多数情况下会有多个Activity,而finish()方法只能结束掉一个Activity,那么,我们可以通过什么方法去退出整个Application呢? 根据各大牛的经验,有 ...

  4. Android中退出多个Activity的两个经典方法

    这里介绍两种方法:一种把每个activity记住,然后逐一干掉:另一种思路是使用广播. 方法一.用list保存activity实例,然后逐一干掉 上代码: import java.util.Linke ...

  5. android开发全然退出activity

    我们退出Activity能够调用:finish(),system(0),可是这些都仅仅是单单退出单个Activity 也有人会说,直接把进程杀死,这些做法都不是非常可取.事实上我们翻看api能够发现. ...

  6. Android双击返回键退出Activity的两种方法

    在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记 ...

  7. Android 面试题--Activity

    1.什么是 Activity?Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供,BroadcastR ...

  8. 退出Activity(转)

    退出Activity 如何退出Activity?如何安全退出已调用多个Activity的Application? 退出activity 直接调用 finish () 方法 . //用户点击back键  ...

  9. android完全退出应用程序

    android 完全退出应用程序android android 退出应用程序, 单例模式管理Activity引自:http://www.yoyong.com/archives/199android 退 ...

随机推荐

  1. 一个基于注解的orm简单实现(二):实现思路

    先来看一段常见的数据库操作代码: ``` protected User getDataFromDatabase(long id){ String sql = "select firstnam ...

  2. p1217晚餐(简单的dijkstra)

    题目: 输入: 1000 5 61 2 3002 4 2003 4 6003 4 8005 3 1002 5 650 输出: 4 这道题呢,其实就是用邻接矩阵将每条边耗费的体力存起来,然后用dijks ...

  3. Qt入门之基础篇(三):掌握Qt4的静态编译基本方法

    转载载请注明出处:CN_Simo. 导语: 前两章都提到过“静态编译”(Static Compilation),在Windows下一次静态编译差不多需要长达三个小时才能完成,而且还非常容易由于各种原因 ...

  4. nginx配置参数详解

    配置参数详解 user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍 ...

  5. Ceph osd启动报错osd init failed (36) File name too long

    在Ceph的osd节点上,启动osd进程失败,查看其日志/var/log/ceph/ceph-osd.{osd-index}.log日志,报错如下: 2017-02-14 16:26:13.55853 ...

  6. Java进程通讯

    管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信. 创建子进程Java有两种方式 //第一种 Runtime rt = Runtime.get ...

  7. 每天一个Linux命令 8

    yum 光盘yum源搭建好处:不需要上网,省去许多网络yum源下载所需的时间,安装速度会大大增加.缺点:yum源不一定是最新的 1.打开虚拟机,加载光盘镜像,进入Linux系统,挂载光盘.2. 让网络 ...

  8. 3297: [USACO2011 Open]forgot

    3297: [USACO2011 Open]forgot Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 69  Solved: 51[Submit][ ...

  9. 从Hash Killer I、II、III论字符串哈希

    首先,Hash Killer I.II.III是BZOJ上面三道很经典的字符串哈希破解题.当时关于II,本人还琢磨了好久,但一直不明白为啥别人AC的代码都才0.3kb左右,直到CYG神犇说可以直接随机 ...

  10. .Net Core迁移到MSBuild平台(二)

    一.前言 在上一篇文章.Net Core迁移到MSBuild的多平台编译问题中,简单的讲了下新的项目配置文件中的节点配置,这篇我将用一些例子来详细讲下从project.json迁移到msbuild过程 ...