1、工具类
/**
* Activity管理栈 保存activity的实例,当程序退出时情况activity
*
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class ActivityStack {
/**
* 栈对象,用于存放Activity对象,以便于管理
*/
private static Stack<Activity> mStack;
/**
* 获取管理栈集合
*/
public Stack<Activity> getActivitiesList() {
return mStack;
}
/**
* 弹出Activity
*
* @param activity
* @param isFinish 是否手动finish掉activity
* @see [类、类#方法、类#成员]
*/
public void popActivity(Activity activity, boolean isFinish) {
if (activity != null) {
if (isFinish) {
activity.finish();
}
mStack.remove(activity);
}
}
/**
* 获取栈顶的Activity
*
* @return
* @see [类、类#方法、类#成员]
*/
public Activity currentActivity() {
if (!mStack.isEmpty()) {
// 该方法Returns the last element in this vector.也就是说栈顶的
return (Activity) mStack.lastElement();
} else {
return null;
}
}
/**
* 获取栈的Acitivity
*
* @param dept 索引(倒叙形式)
* @return
* @see [类、类#方法、类#成员]
*/
public Activity getNextActivity(int dept) {
// 反序返回指定索引号的Activity实例,但不做弹出栈操作
if (dept <= mStack.size()) {
return mStack.get(dept);
} else {
return null;
}
}
/**
* Activity入栈
*
* @param activity
* @see [类、类#方法、类#成员]
*/
public void addActivity(Activity activity) {
if (mStack == null) {
mStack = new Stack<Activity>();
}
mStack.add(activity);
}
/**
* 清空Activity栈
*
* @see [类、类#方法、类#成员]
*/
public void removeAllActivity() {
while (mStack != null && mStack.size() > 0) {
Activity activity = currentActivity();
if (activity != null) {
popActivity(activity, true);
}
}
}
/**
* 获取指定的Acitivity
*
* @param (倒叙形式)
* @return
* @see [类、类#方法、类#成员]
*/
public Activity getFoundCampaignDetailActivity() {
Activity activity = null;
if (!mStack.isEmpty() && mStack.size() > 0) {
for (int i = 0; i < mStack.size(); i++) {
// if (getNextActivity(i) instanceof FoundCampaignDetailActivity)
// {
// activity = getNextActivity(i);
// break;
// }
}
}
return activity;
}
}
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);
}
}
3、在类中的使用
//继承Baseactivity
public class ProfitOrderActivity extends BaseActivity {
ActivityProfitOrderBinding binding;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
mActivityStack.addActivity(this);//添加到栈中
binding = DataBindingUtil.setContentView(this, R.layout.activity_profit_order);
}
}