版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aaa1050070637/article/details/82346770
/**
*
* Activity管理类
* Activity堆栈式管理
*
*/
public class APPActivityManager {
private static Stack<Activity> activityStack;
private static APPActivityManager instance;
private APPActivityManager() {
}
/**
* 实例化
* @return
*/
public static APPActivityManager getAppManager() {
if (instance == null) {
instance = new APPActivityManager();
}
return instance;
}
/**
* 添加到堆里
* @param activity
*/
public void addActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 获取当前的Activity
* @return
*/
public Activity currentActivity() {
Activity activity = activityStack.lastElement();
return activity;
}
/**
* 关闭当前Activity
*/
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}
/**
* 结束当前Activity
* @param activity
*/
public void finishActivity(Activity activity) {
if (activity != null && !activity.isFinishing()) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 结束Activity
* @param cls
*/
public void finishActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
break;
}
}
}
/**
* 结束所有的Activity
*/
public void finishAllActivity() {
if (activityStack != null) {
int size = activityStack.size();
for (int i = 0; i < size; i++) {
Activity activity = activityStack.get(i);
if (null != activity && !activity.isFinishing()) {
activity.finish();
}
}
activityStack.clear();
}
}
public void ZGLF(List<Class<?>> zglcls) {
for (int j = 0; j < zglcls.size(); j++) {
for (int i = 0, size = activityStack.size(); i < size; i++) {
System.out.println("i:****" + i + "j:*****" + j);
if (null != activityStack.get(i)
&& activityStack.get(i).getClass()
.equals(zglcls.get(j))) {
finishActivity(activityStack.get(i));
System.out.println(activityStack.get(i).toString());
size = activityStack.size();
}
}
}
activityStack.clear();
}
/**
* 获取Activity
* @param cls
* @return
*/
public static Activity getActivity(Class<?> cls) {
if (activityStack != null) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
return activity;
}
}
}
return null;
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
} catch (Exception e) {
}
}
/**
* Information you can retrieve about a particular task that is currently
* "running" in the system. Note that a running task does not mean the given
* task actually has a process it is actively running in; it simply means
* that the user has gone to it and never closed it, but currently the
* system may have killed its process and is only holding on to its last
* state in order to restart it when the user returns.
*/
public static class RunningTaskInfo implements Parcelable {
/**
* A unique identifier for this task.
*/
public int id;
/**
* The component launched as the first activity in the task. This can be
* considered the "application" of this task.
*/
public ComponentName baseActivity;
/**
* The activity component at the top of the history stack of the task.
* This is what the user is currently doing.
*/
public ComponentName topActivity;
/**
* Thumbnail representation of the task's current state. Currently
* always null.
*/
public Bitmap thumbnail;
/**
* Description of the task's current state.
*/
public CharSequence description;
/**
* Number of activities in this task.
*/
public int numActivities;
/**
* Number of activities that are currently running (not stopped and
* persisted) in this task.
*/
public int numRunning;
public RunningTaskInfo() {
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
ComponentName.writeToParcel(baseActivity, dest);
ComponentName.writeToParcel(topActivity, dest);
if (thumbnail != null) {
dest.writeInt(1);
thumbnail.writeToParcel(dest, 0);
} else {
dest.writeInt(0);
}
TextUtils.writeToParcel(description, dest,
Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
dest.writeInt(numActivities);
dest.writeInt(numRunning);
}
public void readFromParcel(Parcel source) {
id = source.readInt();
baseActivity = ComponentName.readFromParcel(source);
topActivity = ComponentName.readFromParcel(source);
if (source.readInt() != 0) {
thumbnail = Bitmap.CREATOR.createFromParcel(source);
} else {
thumbnail = null;
}
description = TextUtils.CHAR_SEQUENCE_CREATOR
.createFromParcel(source);
numActivities = source.readInt();
numRunning = source.readInt();
}
public static final Creator<RunningTaskInfo> CREATOR = new Creator<RunningTaskInfo>() {
public RunningTaskInfo createFromParcel(Parcel source) {
return new RunningTaskInfo(source);
}
public RunningTaskInfo[] newArray(int size) {
return new RunningTaskInfo[size];
}
};
private RunningTaskInfo(Parcel source) {
readFromParcel(source);
}
}
}