关于一次退出多个Activity的方法

本文介绍了一种通过使用SysApplication类在Android应用中实现一键批量退出多个Activity并直接退出应用的方法,包括如何在打开每个Activity时添加自身到活动列表中,以及在退出时调用SysApplication实例的exit()方法关闭所有Activity并退出应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单个activity退出可直接调用finish(); 但是一次推出多个呢?

比如:我依次进入不同Activity,A->B->C.(在A 进入B  在B 进去C)

若我在C activity返回键的时候,正常模式为退到了B activity,在返回键退到了A activity。然后再返回键退出应用

但是我想在C activity 按返回键时直接退出应用。

这就是具体问题的由来, 一次退出多个activity。

解决办法:

第一:在你的项目中导入此类,类名:SysApplication:

<span style="font-size:12px;">package com.example.viewpage; //这个是我的包,改成你自己的包名
import java.util.LinkedList; 
import java.util.List; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Application; 
import android.content.DialogInterface; 
import android.content.Intent; 
 
public class SysApplication extends Application { 
    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; 
    } 
    // add Activity  
    public void addActivity(Activity activity) { 
        mList.add(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(); 
    }  
}</span>
在你打开的每个acticity 的setContentView(R.layout.xx)前面(oncraet后)

 SysApplication.getInstance().addActivity(this);  //添加当前Acitivity到ancivitylist里面去

在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

(我是返回键事件退出,)

比如你要在C activity按键退出应用,则在C activity重写onKeyDown函数:

<span style="font-size:14px;">@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {// 应用程序返回键的捕获
		if(keyCode == KeyEvent.KEYCODE_BACK){//按返回键时
			SysApplication.getInstance().exit();//调用此句代码
			return true;
		}
		return true;
	}
//	@Override
//	protected void onDestroy() {
//		super.onDestroy();
//		</span><span style="font-size:14px;">SysApplication.getInstance().exit();</span><span style="font-size:14px;"> 	}
}</span>
我不知道下边的ondestory是否可行-。-


   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值