Android 中 关闭部分 Activity 的方法总结

每一个activity都有自己的生命周期,被打开了最终就要被关闭。

四种结束当前的activity方法

//关闭当前activity方法一(最常用)
finish();

//关闭当前界面方法二
android.os.Process.killProcess(android.os.Process.myPid());

//关闭当前界面方法三
System.exit(0);

//关闭当前界面方法四
this.onDestroy();

  

  但如果已经启动了四个Activity:A,B,C和D,

  在D Activity里,想再启动一个Activity B,但不变成A,B,C,D,B,而是希望是A,B,而且B上的数据依然保留

Intent intent = new Intent();
intent.setClass(TableActivity.this, FrameActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//设置不要刷新将要跳到的界面
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity
startActivity(intent);

  如果已经启动了四个Activity:A,B,C和D,

  在D Activity里,想再启动一个Activity B,但不变成A,B,C,D,B,而是希望是A,B,而且B上的数据不保留

Intent intent = new Intent();
intent.setClass(TableActivity.this, FrameActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity
startActivity(intent);

  如果已经启动了四个Activity:A,B,C和D,在D Activity里,
  想再启动一个 Activity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:

Intent intent1 = new Intent(TableActivity.this, FrameActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent1); 

  如果已经启动了四个Activity:A,B,C和D,在D Activity里,想要一次性关闭所有的activity

  创建一个专门用来处理activity的类

import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.Application; 

/**
 * 一个类 用来结束所有后台activity
 * @author TuWei
 */
public class SysApplication extends Application {
    //运用list来保存们每一个activity是关键
    private List<Activity> mList = new LinkedList<Activity>();
    //为了实现每次使用该类时不创建新的对象而创建的静态对象
    private static SysApplication instance;
    //构造方法
    private SysApplication(){}
    //单例
    public synchronized static SysApplication getInstance(){
        if (null == instance) {
            instance = new SysApplication();
        }
        return instance;
    }
    //添加Activity
    public void addActivity(Activity activity) {
        mList.add(activity);
    }
    //关闭每一个list内的activity
    public void exit() {
        try {
            for (Activity activity:mList) {
                if (activity != null){
                    activity.finish();           }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.exit(0);
        }
    }
    //杀进程
    public void onLowMemory() {
        super.onLowMemory();
        System.gc();
    }
}
 

  在每个activity被创建时加上

SysApplication.getInstance().addActivity(this);  

  

  将该activity添加到list中去。

  当你想关闭时,调用SysApplication的exit方法

//关闭整个程序
SysApplication.getInstance().exit();

转自:http://java--hhf.iteye.com/blog/1826880

时间: 2024-10-27 19:50:58

Android 中 关闭部分 Activity 的方法总结的相关文章

android中关闭所有activity方法

在android中退出app时关闭所有Activity的方式有很多,例如发送一个全局的BroadCast.直接杀死当前的pid...但是如果我们做的功能是一个sdk那情况就不一样了..经过项目上线后惨痛的教训我们决定还是通过自定义Stack来管理我们的activity. 首先说说这个坑人的BroadCast,因为我们发送的是无序广播,不知道那个Activity会先收到,这个导致了一个严重的问题==后收到广播的Activity会重绘而我们的需求是不希望activity被重新创建bug一大堆:其次我

android 中View, Window, Activity, WindowManager,ViewRoot几者之间的关系

(1)View:最基本的UI组件,表示屏幕上的一个矩形区域. (2)Window: 表示一个窗口,不一定有屏幕那么大,可以很大也可以很小: 它包含一个View tree和窗口的layout 参数. View tree的root View可以通过getDecorView得到.还可以设置Window的Content View. (3)Activity:Activity包含一个Window,该Window在Activity的attach方法中通过调用 PolicyManager.makeNewWind

Android中通过注解代替findViewById方法

尊重原创 http://write.blog.csdn.net/postedit/26507351 这篇文章主要讲解注解实现findViewById的功能,首先我们来熟悉一下在java中怎么定义一个注解和解析一个注解 注解的概念是在jdk5.0中提出来的,在java.lang的包中已经定义了三个注解:Override,Deprecated,SuppressWarnings Override相信大家非常熟悉,就是表明这个方法是改写了父类的方法 Deprecated表示在新版本的 jdk中已经不建议

android中fragment和activity之间相互通信

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信.下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法. 1. activity 向fragment发出通信,就这么写: private OnMainListener mainListener; // 绑定接口 @Override public void onAttachFragment(Fragmentfragment) { try { mainListener =

Android 中使用自定义字体的方法

1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:layout_width="fill

Android中播放Gif图片的方法

Android中播放Gif图片的方法. 主要原理是取出Gif中的每一帧图片,分别设置到ImageView上边展示出来 使用到Code.Google上边的一个开源类库GifDecoder,下载不了的可以从我后边给出的Demo中搬运. 准备一个类继承自ImageView重写其构造方法同时传入一个输入流. [java] view plaincopyprint? <span style="font-size:18px;">public class GifDecoderView ex

android中获取root权限的方法以及原理(转)

一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等. 2. Root的原理介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限

Android中突发情况Activity数据的保存和恢复

Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需要我们使用正确的方式进行保存或恢复. 突发情况都有哪些? 因为本文讨论的是当一些突发情况的出现时,对数据的保存和恢复.所以现在总结一下突发情况应该都有哪些? 点击back键 点击锁屏键 点击home键 其他APP进入前台 启动了另一个Activity 屏幕方向旋转 APP被Kill 当这些突发情况发

Android中多个Activity继承自己写的父容器(Activity)

如果你的一个应用里面有几个不同的页面却需要设置一些相同的东西,那么,我觉得应该尝试着用父容器,开始自己就是不知道这个概念,弄得自己写了太多的不应该的代码....所谓的程序.....苦煞也.. 在父容器里面,我们可以统一相同的title,以及·相同的背景页面... 这里我给出一个连接哦,不懂的,就可以嘿咻嘿咻..http://pan.baidu.com/s/1sjBDPbn Android中多个Activity继承自己写的父容器(Activity),布布扣,bubuko.com