首先,自定义一个ActivityManager管理类,用于管理栈中的Activity

 public class ActivityManager{
private static final String TAG = "ActivityManager";
private static Stack<Activity> activityStack;
private static ActivityManager instance;
private Activity currActivity;
private ActivityManager(){
} public static ActivityManager getActivityManager(){
if(instance == null){
instance = new ActivityManager();
}
return instance;
} //退出栈顶Activity
public void popActivity(Activity activity){
if(activity == null || activityStack == null){
return;
}
if(activityStack.contains(activity)){
activityStack.remove(activity);
}
currActivity = activity;
//activity.finish; } public void destoryActivity(Activity activity){
if(activity == null){
return;
}
activity.finish();
if(activityStack.contains(activity)){
activityStack.remove(activity);
}
activity=null;
} //获得当前栈顶Activity
public Activity currentActivity(){
if(activityStack == null||activityStack.empty()){
return null;
}
return activityStack.lastElement();
} //将当前Activity推入栈中
public void pushActivity(Activity activity){
if(activityStack == null){
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
} //退出栈中除指定的Activity外所有
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity = currentActivity();
if(activity == null){
break;
if(activity.getClass().equals(cls))
break;
destroyActivity(activity);
}
} //退出栈中所有Activity
public void popAllActivity(){
popAllActivityExceptOne(null);
} public Activity getCurrentActivity(){
return currActivity;
} public int getActivityStackSize(){
int size = 0;
if(activityStack != null){
size = activityStack.size();
}
return size;
}
}

然后,在baseActivity中的两个方法添加如下方法(如果没有baseActivity,就得一个个加了)

 @Override
protected void onPause(){
super.onPause();
ActivityManager.getActivityManager().pushActivity(this);
} @Override
protected void onResume(){
super.onResume();
ActivityManager.getActivityManager().popActivity(this);
}

最后,根据需求判断,在需要清除所有activity的地方,加上如下代码

 if(isRestart){
ActivityManager.getActivityManager().popAllActivity();
Intent intent = new Intent(this, LoadingActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
isRestart=false;
this.finish();
}

PS:清除掉所有activity后,startActivity时需要给它加上Intent.FLAG_ACTIVITY_CLEAR_TOP,表示start的这个activity置顶,并二次清除掉所有这个activity之上的activity。

转自:http://blog.csdn.net/a394268045/article/details/51648149

Android—一次清除所有Activity的更多相关文章

  1. 退出Android程序时清除所有activity的实现方法

    思路: 1. 自定义ActivityList管理类,添加删除维护该list; 2.Activity Stack 类似上面: 3.singleTask定义一个Activity为该启动模式,然后当返回时, ...

  2. Android总结篇系列:Activity Intent Flags及Task相关属性

    同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...

  3. Android 一次退出所有activity的方法

    转自:http://bbs.51cto.com/thread-970933-1.html 因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费 ...

  4. 查看Android应用包名、Activity的几个方法

    一.有源码情况 直接打开AndroidManifest.xml文件,找到包含android.intent.action.MAIN和android.intent.category.LAUNCHER对应的 ...

  5. 【转】Android总结篇系列:Activity Intent Flags及Task相关属性

    [转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...

  6. android Application Component研究之Activity(二)

    http://blog.csdn.net/windskier/article/details/7172710 本文为原创文章,欢迎转载!转载时请注明出处:http://blog.csdn.net/wi ...

  7. 【appium】查看Android应用包名、Activity的几个方法

    一.有源码情况 直接打开AndroidManifest.xml文件,找到包含android.intent.action.MAIN和android.intent.category.LAUNCHER对应的 ...

  8. Android面试收集录1 Activity+Service

    1.Activity的生命周期 1.1.首先查看一下Activity生命周期经典图片. 在正常情况下,一个Activity从启动到结束会以如下顺序经历整个生命周期: onCreate()->on ...

  9. Android SDK上手指南:Activity与生命周期

    Android SDK上手指南:Activity与生命周期 2013-12-26 15:26 核子可乐译 51CTO 字号:T | T Activity生命周期并不仅仅在用户运行应用程序之后才开始生效 ...

随机推荐

  1. TensorFlow学习笔记(6):TensorBoard之Embeddings

    本文基于TensorFlow官网的How-Tos写成. TensorBoard是TensorFlow自带的一个可视化工具,Embeddings是其中的一个功能,用于在二维或三维空间对高维数据进行探索. ...

  2. Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)

    我真的是太菜了 A. Perfect Squares time limit per test 1 second memory limit per test 256 megabytes input st ...

  3. 【bzoj2225】[Spoj 2371]Another Longest Increasing CDQ分治+树状数组

    题目描述 给定N个数对(xi, yi),求最长上升子序列的长度.上升序列定义为{(xi, yi)}满足对i<j有xi<xj且yi<yj. 样例输入 8 1 3 3 2 1 1 4 5 ...

  4. [HDNOIP2017提高组]题解

    (送给外省的同学们:HD = 海淀) [HDNOIP201701]小鱼干 试题描述 小喵喵有 n 个小鱼干排成一列,其中第 i 个小鱼干有两种属性,美味度 ai 和特殊度 bi. 现在小喵喵要吃掉一些 ...

  5. 配置 MySQL 服务器容器

    本文介绍在单一宿主机上如何配置自动备份.建议使用两个容器,其中一个容器作为 MySQL 的服务器,用来处理数据:另一个容器用于自动备份.这样保证隔离,避免备份的容器影响到 MySQL Server 的 ...

  6. 刷题总结——怪题(ssoj费用流)

    题目: 题目描述 给出一个长度为 n 的整数序列 hi ,现在要通过一些操作将这个序列修改为单调不降序列,即  hi≤hi+1 . 可以用的操作有 m 种,第 i 种操作可以通过支付 ci 的代价将一 ...

  7. [bzoj2302][HNOI2011]problem c 递推,dp

    [HAOI2011]Problem c Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 949  Solved: 519[Submit][Status] ...

  8. Microsoft发布新一代主机:Xbox One

    当 Xbox One 这个名字从 Microsoft 高管 Don Mattrick 口中被念出来时,现场直接沸腾了.按照 Mattrick 的说法这是一款 all-in-one 的主机,而其核心价值 ...

  9. comet realization with ajax&php

    1.prepare front-end code, meta content-type cannot be ignored! as to the xhr, status should be 3 < ...

  10. configure: error: off_t undefined; check your library configuration

    configure: error: off_t undefined; check your library configuration 发生背景: 编译PHP时出现的提示,报错信息为: configu ...