1、工具类
/**
* Activity管理栈 保存activity的实例,当程序退出时情况activity
*
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class ActivityStack {
//栈对象,用于存放Activity对象,以便于管理
private Stack<Activity> mStack;
/**
* 弹出Activity
* 结束指定的类名activity
*
* @param activity
* @see [类、类#方法、类#成员]
*/
public void removeActivity(Activity activity) {
if (activity != null) {
mStack.remove(activity);
activity.finish();
}
}
/**
* Activity入栈
*
* @param activity
*/
public void addActivity(Activity activity) {
if (mStack == null) {
mStack = new Stack<>();
if (!mStack.contains(activity)) {
mStack.add(activity);
}
}
}
/**
* 清空所有Activity栈类似App退出
*/
public void removeAllActivity() {
while (mStack != null && mStack.size() > 0) {
Activity activity = currentActivity();
if (activity != null) {
removeActivity(activity);
}
}
System.exit(0);
}
/**
* 获取栈顶的Activity
*
* @return
* @see [类、类#方法、类#成员]
*/
public Activity currentActivity() {
if (!mStack.isEmpty()) {
// 该方法Returns the last element in this vector.也就是说栈顶的
return (Activity) mStack.lastElement();
} else {
return null;
}
}
}
2、在BaseActivity中创建该对象
public class BaseActivity extends AppCompatActivity {
public ActivityStack mActivityStack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getApplicationComponent().inject(this);
if (mActivityStack == null) {
mActivityStack = new ActivityStack();//单例模式
}
mActivityStack.addActivity(this);
}
}