版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zsp_android_com/article/details/86081066
package util;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Created on 2017/9/19.
*
* @author xxx
* @desc 用于活动管理和应用退出
* BaseActivity之OnCreate()推当前Activity至Activity管理容器,需时遍历容器,finish所有Activity。
*/
public class ActivitySuperviseUtils {
private static final List<Activity> ACTIVITIES = Collections.synchronizedList(new LinkedList<Activity>());
/**
* 添Activity至堆栈
*
* @param activity 活动
*/
public static void pushActivity(Activity activity) {
ACTIVITIES.add(activity);
LogManager.e("活动数", String.valueOf(ACTIVITIES.size()));
for (int i = 0; i < ACTIVITIES.size(); i++) {
LogManager.e("概览", ACTIVITIES.get(i).getClass().getSimpleName());
}
LogManager.e("推入", ACTIVITIES.get(ACTIVITIES.size() - 1).getClass().getSimpleName());
}
/**
* 栈顶Activity(堆栈最后压入)
*/
public static Activity getCurrentActivity() {
if (ACTIVITIES == null || ACTIVITIES.isEmpty()) {
return null;
}
return ACTIVITIES.get(ACTIVITIES.size() - 1);
}
/**
* 查指定类名Activity
*
* @param cls cls
* @return activity
*/
public static Activity findActivity(Class<?> cls) {
Activity targetActivity = null;
if (ACTIVITIES != null) {
for (Activity activity : ACTIVITIES) {
if (activity.getClass().equals(cls)) {
targetActivity = activity;
break;
}
}
}
return targetActivity;
}
/**
* 结束栈顶Activity(堆栈最后压入)
*/
public static void finishCurrentActivity() {
if (ACTIVITIES == null || ACTIVITIES.isEmpty()) {
return;
}
Activity activity = ACTIVITIES.get(ACTIVITIES.size() - 1);
finishActivity(activity);
}
/**
* 结束指定Activity
*
* @param activity 活动
*/
public static void finishActivity(Activity activity) {
if (ACTIVITIES == null || ACTIVITIES.isEmpty()) {
return;
}
if (activity != null) {
ACTIVITIES.remove(activity);
activity.finish();
}
}
/**
* 结束指定类名Activity
*
* @param cls cls
*/
public static void finishActivity(Class<?> cls) {
if (ACTIVITIES == null || ACTIVITIES.isEmpty()) {
return;
}
for (Activity activity : ACTIVITIES) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
private static void finishAllActivity() {
if (ACTIVITIES == null) {
return;
}
for (Activity activity : ACTIVITIES) {
activity.finish();
}
ACTIVITIES.clear();
}
/**
* 退应用
*/
public static void appExit() {
try {
finishAllActivity();
} catch (Exception e) {
LogUtils.e(e.getMessage());
}
}
/**
* 当前Activity名
* info.topActivity.getShortClassName() Activity名
* info.topActivity.getClassName() 类名
* info.topActivity.getPackageName() 包名
* info.topActivity.getClass() 类实例
*
* @param context 上下文
* @return 当前Activity名
*/
public static String getCurrentRunningActivityName(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.RunningTaskInfo info = manager != null ? manager.getRunningTasks(1).get(0) : null;
String activityName = info != null ? info.topActivity.getShortClassName() : null;
LogManager.e("当前活动", activityName);
return activityName;
}
/**
* 栈顶Activity实例
*
* @return 栈顶Activity实例
*/
public static Activity getTopActivityInstance() {
Activity mBaseActivity;
synchronized (ACTIVITIES) {
final int size = ACTIVITIES.size() - 1;
if (size < 0) {
return null;
}
mBaseActivity = ACTIVITIES.get(size);
}
return mBaseActivity;
}
/**
* 栈顶Activity名
*
* @return 栈顶Activity名
*/
public String getTopActivityName() {
Activity mBaseActivity;
synchronized (ACTIVITIES) {
final int size = ACTIVITIES.size() - 1;
if (size < 0) {
return null;
}
mBaseActivity = ACTIVITIES.get(size);
}
return mBaseActivity.getClass().getName();
}
}