如何销毁Activity,和如何一次销毁多个activity

在平时开发中打开过三个activity,分别为:A, B, C,用android设备中的"back"按钮,需要点击三下,才能退出到主界面(即需要三次操作才能销毁掉这三个activity)。那么如何只需要点击一次back就能一次把这三个activity一次销毁掉呢,方法挺简单的,步骤如下:

(1)创建一个ActivityCollector.java,此类用作收集和销毁activity的公共类.

public class ActivityCollector {

    public static List<Activity> activities = new ArrayList<Activity>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }

}

(2).创建一个BaseActivity.java基类,项目中的所有activity都继承此类.

public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
<span style="font-family: Arial, Helvetica, sans-serif;">}</span>

(3)让A, B, C这三个activity分别去继承BaseActivity.java.这样只要activity一起动,或者子activity中重写了onDestroy()方法,子activity就会自动的去收集activity,去销毁某个Activity.

(4).如何在某个地方需要一次销毁所有的activity,只需要调用ActivityCollector.java中的finishAll()方法.

比如在app中的任何一个界面调用loginout方法,就需要用到一次kill多个activity:

public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
            case ConstantUtil.LOGINOUT:
                ActivityCollector.finishAll();
                break;
}
}

上面的代码很简单,但是很适用.

时间: 2024-08-29 22:22:41

如何销毁Activity,和如何一次销毁多个activity的相关文章

Android Activity 调用startActivityForResult之后被销毁?

Android Activity 调用startActivityForResult之后调用的Activity被销毁的问题 最近在华为的手机上面发现Activity调用startActivityForResult后返回结果时,调用的Activity都会被重新创建,也就是Activity被销毁了. 在网上经过一番查找,发现有哥们说在手机开发人员选项里面有这么一项"不保留活动"被勾上了, 一看还真是. 把那个勾去掉一切又恢复正常了.

海珠销毁公司 海珠区文件销毁

白云保密文件销毁,电话:+V电:137-1111-1613欧经理,在日常生活中,我们都会用到文件.文档.档案之类的纸质材料.从定义上讲,文件.文档.档案是不同的东西,但在实际生活中只是一个物品的三种不同叫法.不管它们定义是什么,或者怎么称呼,都有几个共同的作用——记录信息.而这些信息可能是很重要的,保密的涉密文件.文档.档案等等.在使用过后,或者过期过后,这些资料该如何处理?通常,文件销毁.文档销毁.档案销毁等纸质资料销毁有三种方法:1.机械粉碎:2.熔浆再生:3.焚烧处理.机械粉碎:采用粉碎机

海珠区文件销毁 海珠区文档销毁

白云保密文件销毁,电话:+V电:137-1111-1613欧经理,在日常生活中,我们都会用到文件.文档.档案之类的纸质材料.从定义上讲,文件.文档.档案是不同的东西,但在实际生活中只是一个物品的三种不同叫法.不管它们定义是什么,或者怎么称呼,都有几个共同的作用——记录信息.而这些信息可能是很重要的,保密的涉密文件.文档.档案等等.在使用过后,或者过期过后,这些资料该如何处理?通常,文件销毁.文档销毁.档案销毁等纸质资料销毁有三种方法:1.机械粉碎:2.熔浆再生:3.焚烧处理.机械粉碎:采用粉碎机

Activity屏幕旋转时被销毁

之前的一个Activity的设置为android:configChanges="orientation|keyboardHidden",为保证屏幕旋转时不会重新调用各生命周期 后在修改了sdkVersion时,发现切屏时该Activity被销毁 compileSdkVersion buildToolsVersion 需要再加上ScreenSize可修复此问题 <activity    android:name=".MyApp"    android:confi

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

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

android在学习——activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.policy.impl.PhoneWindow)

当我们在退出整个程序的时候偶尔会出现这种报错:Activity has leaked window com.android.internal.policy.impl.PhoneWindow 其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finish()之前将dialog dismiss()掉. 我的做法就是重写本activity的onDestroy()方

Activity与Fragment数据传递之Fragment从Activity获取数据

整理Fragment与Activity之间的数据交换,大体上包括三种: 1.Fragment从Activity获取数据 2.Activity从Fragment获取数据 3.Fragment之间获取数据通常,如果Activity向不同的Activity传递数据,最常用的是通过Intent.putExtra()方法,将简单类型的数据或可序列化的数据保存在Intent对象中,然后在目标Activity中使用getXxx(getInt,getString等)方法获得这些数据.  从Activity向Fr

【Android】Activity切换效果——当通过Service启动自己Activity的时候怎么控制

1原因: 当你在网上搜activity切换效果的时候基本就是告诉你要么是XML要么是overridePendingTransition,但是如果你是Service启动的Activity怎么办,这个网上没有一个给出答案了,所以就自己想了下,发现其实很简单. 2解决方案: 其实很简单,让我们了解下原理,所谓的activity切换也无非是activity根据theme或者别人startactivity的时候调用了overridePendingTransition修改了activity切换的参数,所以很

android 在一个Activity(A)中结束另一个Activity(B)

在ActivityA中定义静态变量: static Acivity ActivityA: 在AcivityA的onCreate()方法里面给ActivityA赋值: ActivityA = this: 在AcivityB中按需要结束ActivityA,执行finsh(): AcivityA.ActivityA.finsh():