Android之当前页关闭其他界面

一、简单的例子:

ActivityA --> ActivityB --> ActivityC

即:从A界面跳转到B界面,再从B跳转到C界面。当点击C界面中的某一个按钮,直接关闭B界面,返回到A界面。

B界面:全局变量中定义

//全局变量
public static ActivityA instance = null; 

//onCreate方法中:
instance = this;

C界面:结束B界面

//写在finish()第二个界面
ActivityA.instance.finish();

二、关闭所有本程序界面

自己定义一个继承activity的基类,然后其他自己的activity继承自定义基类,在基类中实现关闭程序的功能。

Activity工具类:

//Activity活动管理工具
public class ActivityCollector {
	
	public static List activitys = new ArrayList();
	
	//向List中添加一个活动
	public static void addActivity( Activity activity ){
		activitys.add(activity);
	}
	
	//从List中移除活动
	public static void removeActivity( Activity activity ){
		activitys.remove(activity);
	}
	
	//将List中存储的活动全部销毁掉
	public static void finishAll(){
		for ( Activity activity : activitys ) {
			if ( !activity.isFinishing() ) {	
				activity.finish();
			}
		}
	}
}

创建继承Activity类的基类:

public class BaseActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ActivityCollector.addActivity(this);
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		ActivityCollector.removeActivity(this);
	}
	
}

自己的Activity继承自定义的基类:

public class Activity extends BaseActivity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity1);
	}
}

退出程序代码:

ActivityCollector.finishAll();

三、可退出APP、关闭其他界面(Activity存放在map里)

ActivityManager 管理类:

public class ActivityManager {
    /**
     * 存放Activity的map
     */
    private static Map activitys = new HashMap();

    /**
     * 获取管理类中注册的所有Activity的map
     * @return
     */
    public static Map getActivitys()
    {
        return activitys;
    }

    /**
     * 根据键值取对应的Activity
     * @param key 键值
     * @return 键值对应的Activity
     */
    public static Activity getActivity(String key)
    {
        return activitys.get(key);
    }

    /**
     * 注册Activity
     * @param value
     * @param key
     */
    public static void addActivity(Activity value,String key)
    {
        activitys.put(key, value);
    }

    /**
     * 将key对应的Activity移除掉
     * @param key
     */
    public static void removeActivity(String key)
    {
        activitys.remove(key);
    }

    /**
     * finish掉所有的Activity移除所有的Activity
     */
    public static void removeAllActivity()
    {
        Iterator iterActivity = activitys.values().iterator();
        while(iterActivity.hasNext()){
            iterActivity.next().finish();
        }
        activitys.clear();
    }
}

使用的方法:

//创建activity
ActivityManager.addActivity(this,"MainActivity"); 

// 关掉指定的Activity
Activity activity = ActivityManager.getActivity("MainActivity"); 
activity.finish();

// 关掉所有的Activity,退出App时使用 
ActivityManager.removeAllActivity()

 

你可能感兴趣的:(Android之从头自学)