Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38673
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-13 11:24
个人简介

菜鸟一枚

文章分类

全部博文(6)

文章存档

2015年(1)

2014年(5)

我的朋友

分类: Android平台

2014-10-11 14:05:29

    有时候会遇到类似这样的问题,想要跳转到登录页面后点击返回键不再返回上次所在的页面,参考了论坛后有两种方法解决:

一、自己添加一个activity的管理队列
    在自定义的application类里,增加addActivity()方法和removeActivity()方法,在activity的onCreate()方法中调用addActivity()方法,而在onDestory()方法中调用removeActivity()方法。在需要关闭的时候,判断是否为所需关闭的activity,是就调用finish()方法关闭。

点击(此处)折叠或打开

  1. public List<BaseActivity> activityList = new LinkedList<BaseActivity>();
  2.         // 添加Activity到容器中
  3.         public void addActivity(BaseActivityactivity) {
  4.                 activityList.add(activity);
  5.         }
  6.         public void close() {
  7.                 for (Activity activity : activityList) {
  8.                         if(activity != null ){
  9.                                 activity.finish();
  10.                         }
  11.                 }
  12.                 activityList = new LinkedList<BaseActivity>();
  13.         }
  14.         public void removeActivity(Activity activity)
  15.         {
  16.             int i =0;
  17.             for (Activity ac : activityList) {
  18.                 if(ac.equals(activity))
  19.                 {
  20.                     activityList.remove(ac);
  21.                     break;
  22.                 }
  23.                 i++;
  24.         }

二、setFlag的方式关闭
    若想跳转到某个activity后关闭其余activity,可以使用以下方法:

点击(此处)折叠或打开

  1. Intent intent = new Intent(xx.this, xx.class);
  2. in.setFlag(Intent. FLAG_ACTIVITY_CLEAR_TOP);
  3. startActivity(intent);
注意:
public static final int FLAG_ACTIVITY_CLEAR_TOP
API上的解释为:
If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity, all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent.
     即如果设置这个属性,是当要启动的Activity已经存在当前Task中,才会在启动的时候销毁其他的Activity。所以要打开未在task中的activity这种方法行不通。
    要实现打开activity且关闭其余activity,可以使用:

点击(此处)折叠或打开

  1. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
    不过API限制为11及以上。




阅读(862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~