启动一个新的activity的时候怎么把当前task之前的activity都干掉?

Megaderma 2011-11-03 03:10:14
比如当期的task栈是A-》B-》C
C activity在最上端,这个时候我从C startActivity到D,
我要求这个时候A B C都被干掉,只剩下D,请问需要加什么flag??
谢谢!
...全文
329 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hinagi 2011-11-04
  • 打赏
  • 举报
回复
BroadcastReceiver
jdpxiaoming 2011-11-04
  • 打赏
  • 举报
回复
你说的 功能是不是 杀死全部的 activity 这样有一个方法可以 满足你 就是 自己建一个 BaseActivity
然后其它的activity 都 继承 BaseActivity 这样做的好处是
当你要退出系统的时候只要 杀死 BaseActivity 就可以直接退出整个程序。
zenglingyou 2011-11-04
  • 打赏
  • 举报
回复

public class ScreenManager {

  private static Stack activityStack;

  private static ScreenManager instance;

  private ScreenManager(){

  }

  public static ScreenManager getScreenManager(){

  instance=new ScreenManager();

  }

  return instance;

  }

  //退出栈顶Activity

  public void popActivity(Activity activity){

  activity.finish();

  activityStack.remove(activity);

  activity=null;

  }

  }

  //获得当前栈顶Activity

  public Activity currentActivity(){

  Activity activity=activityStack.lastElement();

  return activity;

  }

  //将当前Activity推入栈中

  public void pushActivity(Activity activity){

  activityStack=new Stack();

  }

  activityStack.add(activity);

  }

  //退出栈中所有Activity

  public void popAllActivityExceptOne(Class cls){

  while(true){

  Activity activity=currentActivity();

  break;

  }

  break;

  }

  popActivity(activity);

  }

  }

  }

Megaderma 2011-11-04
  • 打赏
  • 举报
回复
结贴,我已经做好了和11楼的方法类似。
Megaderma 2011-11-03
  • 打赏
  • 举报
回复

有这个需求啊。不仅要被盖住,而且要被destroy掉,这样在D上按返回键就直接退出程序了。
不要C B A依次都要按一次返回键。

[Quote=引用 8 楼 chievement 的回复:]
这个把他干掉干什么呢,你打开一个activity之前的窗口不是干掉的吗?虽然你关闭当前的activity,还会出现,但是能保证你之前的activity都不会显示啊,如果要干掉的话就finish(),destroy()
[/Quote]
chievement 2011-11-03
  • 打赏
  • 举报
回复
是OnDestroy()
chievement 2011-11-03
  • 打赏
  • 举报
回复
这个把他干掉干什么呢,你打开一个activity之前的窗口不是干掉的吗?虽然你关闭当前的activity,还会出现,但是能保证你之前的activity都不会显示啊,如果要干掉的话就finish(),destroy()
Megaderma 2011-11-03
  • 打赏
  • 举报
回复
难道我要记忆住A B C的对象?
不然怎么调用他们的finish?
Android这里做得很蹩脚啊
[Quote=引用 6 楼 sasonsoft 的回复:]
试试调用A、B、C的finish()方法。。。
[/Quote]
SasONsoft 2011-11-03
  • 打赏
  • 举报
回复
试试调用A、B、C的finish()方法。。。
Megaderma 2011-11-03
  • 打赏
  • 举报
回复
继续寻高手
  • 打赏
  • 举报
回复
坐等高手
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cengjingzuiai 的回复:]
Intent.FLAG_ACTIVITY_CLEAR_TOP
[/Quote]
扯吧,這個FLAG意思是 ABCD D->B 變成AB
目標Activity已在棧中存在,將會把位於改目標activity之上的activity從棧中彈出。
Megaderma 2011-11-03
  • 打赏
  • 举报
回复

兄弟,这个不行。FLAG_ACTIVITY_CLEAR_TOP的意思如果A->B->C,要再次启动A或者B的时候才有用。



[Quote=引用 1 楼 cengjingzuiai 的回复:]
Intent.FLAG_ACTIVITY_CLEAR_TOP
[/Quote]
Aicmm 2011-11-03
  • 打赏
  • 举报
回复
Intent.FLAG_ACTIVITY_CLEAR_TOP

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧