我们退出Activity能够调用:finish(),system(0),可是这些都仅仅是单单退出单个Activity





也有人会说,直接把进程杀死,这些做法都不是非常可取。事实上我们翻看api能够发现。Activity





都是放入stack中管理,我们仅仅要把stack清空了,不就全然退出了嘛。

要对Activity的stack





管理,就须要了解launchMode的四种状态。这里就不多说了。自己看看api。





我们就利用android:launchMode="singleTop",当该Activity在栈顶时。会清空它以下的Activity





然后把当前Activity finish掉,就全然关闭了。









实例 A,B。C,D四个Activity;A作为入口,在manifest.xml设置android:launchMode="singleTop"





其它几个不须要设置。

启动顺序 A->B->C->D





这里我们在D窗体打开A窗体时在Intent中直接增加标志Intent.FLAG_ACTIVITY_CLEAR_TOP,





再次开启A时将会清除该进程空间的全部Activity。





在D中使用以下的代码:

Intent intent = new Intent(); 

intent.setClass(D.this, A.class);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置

startActivity(intent)

finish();



A中代码:

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

//退出

if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags()) != 0) {

finish();
}
}

由于A是android:launchMode="singleTop"不会调用oncreate(),而是响应onNewIntent()





这时候推断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。





B,C也被清掉了,由于A中是android:launchMode="singleTop",栈以下的都被清理。

栈中A,B,C,D所有被清理。所以整个程序退出了。

android开发全然退出activity的更多相关文章

  1. Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解

    前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...

  2. Android开发之入口Activity

    Android开发之入口Activity Adnroid App是怎样确定入口Activity的? 难道就由于class的类名叫MainActivity,布局文件叫activity_main.xml? ...

  3. Android开发中在一个Activity中关闭另一个Activity

    比如有ActivityA, ActivityB,在ActivityB中关闭ActivityA 解决方案: 1. 在 ActivityA 里面设置一个静态的变量instance,初始化为this在 Ac ...

  4. android开发中的 Activity 与 Context 区别与联系

    Context 是 Application /Activity /Service的基类 Intent(Context , Class); Activity中的上下文Context是随着活动的产生而产生 ...

  5. Android开发学习之Activity的简介

    1.Activity的概念介绍 Activity是Android组件中最基本也是最常用的一种组件,在一个Android应用中,一个Activity通常就是一个单独的屏幕.每一个Activity都被实现 ...

  6. Android开发-API指南-<activity>

    <activity> 英文原文:http://developer.android.com/guide/topics/manifest/activity-element.html 采集(更新 ...

  7. Android开发常见的Activity中内存泄漏及解决办法

    上一篇文章楼主提到由Context引发的内存泄漏,在这一篇文章里,我们来谈谈Android开发中常见的Activity内存泄漏及解决办法.本文将会以“为什么”“怎么解决”的方式来介绍这几种内存泄漏. ...

  8. Android程序全然退出的三种方法

    1. Dalvik VM的本地方法 android.os.Process.killProcess(android.os.Process.myPid())    //获取PID,眼下获取自己的也仅仅有该 ...

  9. Android开发-无法新建Activity及新建后编译错误

    下载了其他的工程后,新建Activity时无法进行下一步,报错:“This template requires a minimum SDK version of at least 7, and the ...

随机推荐

  1. Angular2响应式表单-翻译与概括官网REACTIVE FORMS页面

    本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...

  2. HDU 2551 竹青遍野(循环,水)

    /* 他开始在他的院子种竹子,第1个月种1根竹子,第2个月种8根竹子,第3个月种27根竹子 ...第N个月就种(N^3)根竹子.当他种下第X根竹子那一刻,就是他重出江湖之时! 告诉你X的值, 你能算出 ...

  3. HDU 4528 小明系列故事――捉迷藏

    广搜. 根据题意,可以知道状态总共有$4*n*m$种.每一个位置四种状态:两个都没有发现:发现$E$没发现$D$:发现$D$没发现$E$:两个都发现. 每次移动的花费都是$1$,队列里面状态的费用是单 ...

  4. sql developer 自定义快捷键

  5. [BZOJ 4057] Kingdoms

    Link: BZOJ 4057 传送门 Solution: 一道比较基础的状压DP 看到$n<=20$,状态转移与顺序相关,就可以开心地状压了 1表示破产,0表示未破产,不断扩展破产的集合即可 ...

  6. Codeforces 920 F SUM and REPLACE

    Dicription Let D(x) be the number of positive divisors of a positive integer x. For example, D(2) =  ...

  7. 1.6(java学习笔记)static关键字

    static关键字 1.static修饰变量也称静态变量,静态变量存放在静态区被该类的所有对象共享. 例如,定义了一个类class User{static Sring city = "a城& ...

  8. linux-内存使用-free

    解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][ ...

  9. JQurey中getJSON方法错误回调方法

    1.使用try...catch实现 2.换$.ajax 3.JQuery 1.5+可以这样使用: $.getJSON("example.json", function() { al ...

  10. JavaScript中的模块化之AMD和CMD

    前言: 为什么我们需要模块化开发,模块化开发的好处有哪些? 首先我们先说一下非模块化的开发方式带来的弊端. 非模块化开发中会导致一些问题的出现,变量和函数命名可能相同,会造成变量污染和冲突,并且出错时 ...