效果:从A界面跳转到B界面,再从B跳转到C界面。当点击C界面中的某一个按钮,直接关闭B界面,返回到A界面。
ActivityA --> ActivityB --> ActivityC
B界面:全局变量中定义
// 定义全局变量
public static ActivityB instance = null;
// onCreate方法中赋值
instance = this;
C界面:结束B界面
// 写在finish()第二个界面
ActivityB.instance.finish();
二、关闭所有本程序界面
自己定义一个继承activity的基类,然后其他自己的activity继承自定义基类,在基类中实现关闭程序的功能。
Activity管理工具类:
/**
* Activity活动管理工具
*/
public class ActivityCollector {
public static List<Activity> activitys = new ArrayList<Activity>();
//向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();
}
}
}
}
创建BaseActivity继承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继承BaseActivity 基类,退出程序时,调用代码:
ActivityCollector.finishAll();
三、将Activity存放在map里,可退出APP或关闭其他界面
ActivityManager管理类:
public class ActivityManager {
/**
* 存放Activity的map
*/
private static Map<String, Activity> activitys = new HashMap<String, Activity>();
/**
* 获取管理类中注册的所有Activity的map
*
* @return
*/
public static Map<String, Activity> 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<Activity> 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()