我们退出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. 洛谷 P3371 【模板】单源最短路径 【链式前向星+SPFA】

    题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三 ...

  2. CF982 C Cut 'em all!【树/DFS/思维】

    [链接]:CF982C [题意]:有一颗树,你需要切掉一些边,使这颗树分拆成若干个节点为偶数的联通分量,最多能切掉几条边.若不能切,输出-1. [分析]: 1.若点数n为奇数,因为奇数不可能分为偶数, ...

  3. 2017中国大学生程序设计竞赛 - 女生专场C【前后缀GCD】

    C HDU - 6025 [题意]:去除数列中的一个数字,使去除后的数列中所有数字的gcd尽可能大. [分析]: 数组prefixgcd[],对于prefixgcd[i]=g,g为a[0]-a[i]的 ...

  4. 训练指南 UVA - 11383(KM算法的应用 lx+ly >=w(x,y))

    layout: post title: 训练指南 UVA - 11383(KM算法的应用 lx+ly >=w(x,y)) author: "luowentaoaa" cata ...

  5. [CF494D]Birthday

    题意:给一棵带边权的树,定义如下的一些东西 $S(x)$表示以$x$为根的子树中的节点组成的集合 $d(u,v)$表示$u$和$v$之间的距离 $f(u,v)\sum\limits_{x\in S(v ...

  6. 【离线】【递推】【multiset】 Codeforces Round #401 (Div. 2) C. Alyona and Spreadsheet

    对询问按右端点排序,对每一列递推出包含当前行的单调不下降串最多向前延伸多少. 用multiset维护,取个最小值,看是否小于等于该询问的左端点. #include<cstdio> #inc ...

  7. 【贪心】【multiset】 Codeforces Round #401 (Div. 2) B. Game of Credit Cards

    对第一个人的排序,然后从小到大处理,对第一个人的每枚卡片,从第二个人的卡片中选择一个大于等于它的最小的,否则选择一个当前剩下的最小的,这样可以保证负场最少. 如果选择的改成大于它的最小的,就可以保证胜 ...

  8. 【分块】【树状数组】bzoj3787 Gty的文艺妹子序列

    题解懒得自己写了,Orz一发wangxz神犇的: http://bakser.gitcafe.com/2014/12/04/bzoj3787-Gty%E7%9A%84%E6%96%87%E8%89%B ...

  9. 1.1(java学习笔记) 面向过程与面向对象

    面向过程思考时,我们会先思考具体的步骤,第一步走什么,第二步做什么. 比如电脑新建文件夹,第一步:打开电脑 第二步:按下鼠标右键. 第三步:找到新建选项 第四步:点击新建选项下的文件夹 c语言是典型的 ...

  10. Jackson错误:Can not deserialize instance of java.lang.String out of START_OBJECT token

    org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not des ...