Android 开发 启动activity并且将前面activity全部清空

本文介绍了三种在Android开发中清空Activity栈的方法,包括使用Intent的FLAG_ACTIVITY_CLEAR_TASK标志,addFlags与setFlags的区别,以及通过Activity管理类实现的方案。

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

方法一:

 Intent intent = new Intent(A.this,B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
startActivity的时候传递FLAG_ACTIVITY_CLEAR_TASK这个标志,那么这个标志将会清除之前所有已经打开的activity.然后将会变成另外一个空栈的root,然后其他的Activitys就都被关闭了.这个方法必须跟着{@link #FLAG_ACTIVITY_NEW_TASK}一起使用.
一定要和FLAG_ACTIVITY_NEW_TASK一起使用!
 

方法二:

 

            Intent intent = new Intent(context,PLoginActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            context.startActivity(intent);    

 

注意这里使用的是addFlags(); 二者的区别是setFlags();会清空原有的Flags设置新的Flags,而addFlags则是添加新的Flags

方法三:

/**
 *@content:活动结束管理类
 *@time:2019-1-29
 *@build:
 */

public class ActivityFinishUtil {
    private static List<Activity> activityList = new ArrayList<>();

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

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

    public static void finishOtherAllActivity(Activity activity){
        for (Activity item : activityList){
            if (item == activity){
                continue;
            }
            item.finish();
        }
    }

    public static void finishAllActivity(){
        for (Activity item : activityList){
            item.finish();
        }
    }

}

此方法只需要在你的基础Activity的onCreateonDestroy添加对应方法

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayout());
        ActivityFinishUtil.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityFinishUtil.removeActivity(this);
    }

 

posted on 2019-01-29 16:24  观心静 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/guanxinjing/p/10334630.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值