启动一个新的activity的时候怎么把当前task之前的activity都干掉? 比如当期的task栈是A-》B-》CC activity在最上端,这个时候我从C startActivity到D,我要求这个时候A B C都被干掉,只剩下D,请问需要加什么flag??谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 兄弟,这个不行。FLAG_ACTIVITY_CLEAR_TOP的意思如果A->B->C,要再次启动A或者B的时候才有用。 扯吧,這個FLAG意思是 ABCD D->B 變成AB目標Activity已在棧中存在,將會把位於改目標activity之上的activity從棧中彈出。 试试调用A、B、C的finish()方法 难道我要记忆住A B C的对象?不然怎么调用他们的finish?Android这里做得很蹩脚啊 这个把他干掉干什么呢,你打开一个activity之前的窗口不是干掉的吗?虽然你关闭当前的activity,还会出现,但是能保证你之前的activity都不会显示啊,如果要干掉的话就finish(),destroy() 有这个需求啊。不仅要被盖住,而且要被destroy掉,这样在D上按返回键就直接退出程序了。不要C B A依次都要按一次返回键。 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); } } } 你说的 功能是不是 杀死全部的 activity 这样有一个方法可以 满足你 就是 自己建一个 BaseActivity然后其它的activity 都 继承 BaseActivity 这样做的好处是 当你要退出系统的时候只要 杀死 BaseActivity 就可以直接退出整个程序。 自定义ViewGroup中不能正确显示 其它的viewGroup C向JAVA多个字符串传递问题 Android 3D引擎推荐 帮忙看看程序为什么强制停止 android 新浪微博客户端开发 请问路过的大神,3.0上如何显示menu键 ContentProvider 问题 Activity的跳转问题 intent的携带数据 如何解决httpResponse = httpClient.execute(httpGet);无法执行的问题? 如何在Android的Application里创建文件呀? DDMS发送中文短信时出现乱码如何解决 java中,截取字符,并取对应的值的问题,在线等
兄弟,这个不行。FLAG_ACTIVITY_CLEAR_TOP的意思如果A->B->C,要再次启动A或者B的时候才有用。
目標Activity已在棧中存在,將會把位於改目標activity之上的activity從棧中彈出。
不然怎么调用他们的finish?
Android这里做得很蹩脚啊
有这个需求啊。不仅要被盖住,而且要被destroy掉,这样在D上按返回键就直接退出程序了。
不要C B A依次都要按一次返回键。
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); } } }
然后其它的activity 都 继承 BaseActivity 这样做的好处是
当你要退出系统的时候只要 杀死 BaseActivity 就可以直接退出整个程序。