android开发完全退出activity

我们退出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,布布扣,bubuko.com

时间: 2024-10-23 10:56:10

android开发完全退出activity的相关文章

Android开发四大组件--Activity详解

Android开发四大组件--Activity详解 - Android开发教程 Android开发的四大组件在开发中应用中是必不可少的,下面就来详解下四大组件之一Activity,总结自网络.Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()——>onStart()——>onResume() 当另一个Activity启动时: 第一个Activity onPause()——>第二个Activity onCreate()——>

Android开发之入口Activity

原文:Android开发之入口Activity Android开发之入口Activity Adnroid App是如何确定入口Activity的? 难道就因为class的类名叫MainActivity,布局文件叫activity_main.xml? 如果这样认为,就大错特错了. 之所以能够确定入口Activity,是因为在应用的清单文件中有所配置,系统会根据应用的清单文件(AndroidManifest.xml)来确立. 如何确立,标志是什么? 我们来看一下清单文件,便一目了然: 对了,系统能够

第四章 Android开发三大基石—Activity、Service和Handler(1)

第四章 Android开发三大基石-Activity.Service和Handler 学习Android开发,首先就不得不学习Activity和Service这两个组件.Activity是有界面的程序,几乎承载着用户对应用程序的所有操作.而Service是没有界面的程序,它是所谓的服务,也叫后台程序.掌握好它们,是我们学习Android开发必不可少的环节.Handler是Android开发中最常用的消息机制,几乎所有应用程序都会使用Handler传递消息.可以说,想要学习Android应用开发,

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

Android开发中在一个Activity中关闭另一个Activity 比如有ActivityA, ActivityB,在ActivityB中关闭ActivityA 解决方案: 1. 在 ActivityA 里面设置一个静态的变量instance,初始化为this在 ActivityB 里面, ActivityA.instance.finish(); 2. 也可以通过ActivityManager ActivityManager manager = (ActivityManager)getSys

第四章 Android开发三大基石—Activity、Service和Handler(6)

4.3 Android线程间的通信-消息机制 在Android程序运行中,线程之间或者线程内部进行信息交互时经常会使用到消息,如果我们熟悉这些基础的东西及其内部原理,将会使我们的Android开发变的更加容易,从而更好地架构系统.下面,就让我们来看看Android中的消息机制到底是怎样一回事吧. 4.3.1消息的传递-Handler的使用 在Android中,线程之间进行信息交互时经常会使用消息,那么,"消息"是在什么时候使用呢?它的工作原理又是怎么样的呢? 在解释这些之前,我们先来看

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

上一篇文章楼主提到由Context引发的内存泄漏,在这一篇文章里,我们来谈谈Android开发中常见的Activity内存泄漏及解决办法.本文将会以"为什么""怎么解决"的方式来介绍这几种内存泄漏. 在开篇之前,先来了解一下什么是内存泄漏. 什么是内存泄漏? 内存泄漏是当程序不再使用到的内存时,释放内存失败而产生了无用的内存消耗.内存泄漏并不是指物理上的内存消失,这里的内存泄漏是值由程序分配的内存但是由于程序逻辑错误而导致程序失去了对该内存的控制,使得内存浪费. 怎

第四章 Android开发三大基石—Activity、Service和Handler(2)

4.1.3Activity的创建 在 Android 中创建一个 Activity 是很简单的事情,编写一个继承自 android.app.Activity的类,并在 AndroidManifest.xml文件中声明即可.下面,我们来看一个例子,我们创建一个MyActivity类继承自Activity,代码如下: public class MyActivity extends Activity {     @Override     public void onCreate(Bundle sav

10天学通Android开发(2-1)-核心组件Activity

Activity.Service.Broadcast Receiver.Content Provide为Android四大核心组件,Activity是与用户交互的窗口,有三种状态:运行.暂停.停止 七个方法:    protected void onCreate(Bundle savedInstanceState);      protected void onStart();      protected void onRestart();      protected void onResu

第四章 Android开发三大基石—Activity、Service和Handler(3)

4.1.5Activity交互-Activity跳转 一般的,我们的应用程序都不会简单到只有一个界面,而是会有很多个界面,这个时候我们就会创建多个Activity,然后根据业务逻辑在多个Activity之间进行跳转. 我们可以用切换Layout的方式进行手机页面间的转换.但是如果要转换的页面并不单单只是背景.颜色或文字内容的不同,而是需要对整个Activity进行置换,并将主控权交给新的Activity,那就不是仅靠改变Layout就能完成了,我们需要在这些Activity中进行跳转及数据传递.