package com.hdl.photovoltaic.utils;
|
|
import android.app.Activity;
|
import android.app.ActivityManager;
|
import android.content.Context;
|
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageManager;
|
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.hdl.photovoltaic.widget.LoadingDialog;
|
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Stack;
|
|
/**
|
* Author: Zoro
|
* Date: 2019/6/9
|
* Description: This is AppManagerUtils
|
*/
|
|
public class AppManagerUtils {
|
|
private static AppManagerUtils appManagerUtils;
|
|
private LoadingDialog loadingDialog;
|
|
private AppManagerUtils() {
|
}
|
|
public static AppManagerUtils getAppManager() {
|
if (null == appManagerUtils) {
|
synchronized (AppManagerUtils.class) {
|
if (null == appManagerUtils) {
|
appManagerUtils = new AppManagerUtils();
|
}
|
}
|
}
|
return appManagerUtils;
|
}
|
|
/**
|
* 获取AppVersion
|
*
|
* @param context -
|
* @return -
|
*/
|
public static String getAppVersion(Context context) {
|
String version = "";
|
try {
|
String packageName = context.getPackageName();
|
PackageManager packageManager = context.getPackageManager();
|
PackageInfo packageInfo = packageManager.getPackageInfo(packageName, 0);
|
version = packageInfo.versionName;
|
} catch (PackageManager.NameNotFoundException e) {
|
e.printStackTrace();
|
}
|
return version;
|
}
|
|
/**
|
* 默认的Activity堆栈
|
*/
|
private Stack<Activity> activityStack;
|
|
/**
|
* 添加Activity到堆栈
|
*/
|
public void addActivity(Activity activity) {
|
if (activityStack == null) {
|
activityStack = new Stack<>();
|
}
|
activityStack.add(activity);
|
}
|
|
|
/**
|
* 移除Activity
|
*/
|
public void removeActivity(Activity activity) {
|
if (activity != null) {
|
activityStack.remove(activity);
|
}
|
}
|
|
/**
|
* 结束指定类名的Activity
|
*/
|
public void finishActivity(Class<?>... args) {
|
Iterator<Activity> iterator = activityStack.listIterator();
|
while (iterator.hasNext()) {
|
Activity activity = iterator.next();
|
for (Class<?> cls : args) {
|
if (activity.getClass().equals(cls)) {
|
activity.finish();
|
iterator.remove();
|
}
|
}
|
}
|
}
|
|
/**
|
* 是否存在类名的Activity
|
*/
|
public boolean existsActivity(Class<?>... args) {
|
for (Activity activity : activityStack) {
|
for (Class<?> cls : args) {
|
if (activity.getClass().equals(cls)) {
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 指定一个类名,从指定类名开始移除后面所有Activity
|
*
|
* @param className Activity-类名(activity.getClass().getName())
|
* @param removeClass 是否移除本身(true-移除)
|
*/
|
public void finishActivity(String className, boolean removeClass) {
|
Iterator<Activity> iterator = activityStack.listIterator();
|
while (iterator.hasNext()) {
|
Activity activity = iterator.next();
|
if (activity.getClass().getName().equals(className)) {
|
if (removeClass) {
|
activity.finish();
|
iterator.remove();
|
}
|
break;
|
} else {
|
activity.finish();
|
iterator.remove();
|
}
|
}
|
|
// int count= activityStack.size() - 1;
|
// for (Iterator<Activity> it = activityStack.listIterator(count); it.hasNext(); ) {
|
// Activity activity = it.next();
|
// System.out.println("移除结束" + activity.getClass().getName());
|
// if (activity.getClass().getName().equals(className)) {
|
// if (removeClass) {
|
// activity.finish();
|
// it.remove();
|
// }
|
// break;
|
// } else {
|
// activity.finish();
|
// it.remove();
|
// }
|
// }
|
}
|
|
|
public boolean existsActivity(Context activity,String className){
|
boolean isLoginActivity = false;
|
// 获取当前Activity的列表
|
ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
|
List<ActivityManager.RunningTaskInfo> taskInfo = activityManager.getRunningTasks(1);
|
// 遍历Activity列表,判断目标Activity是否在列表中
|
for (ActivityManager.RunningTaskInfo info : taskInfo) {
|
if (info.topActivity.getClassName().equals("com.hdl.photovoltaic.ui.LoginActivity")) {
|
// 目标Activity存在
|
// 在这里可以进行相应处理
|
isLoginActivity = true;
|
break;
|
}
|
}
|
return isLoginActivity;
|
}
|
|
/**
|
* 结束所有Activity
|
*/
|
public void finishAllActivity() {
|
if (activityStack == null) {
|
return;
|
}
|
for (int i = 0, size = activityStack.size(); i < size; i++) {
|
if (null != activityStack.get(i)) {
|
Activity activity = activityStack.get(i);
|
if (!activity.isFinishing()) {
|
activity.finish();
|
}
|
}
|
}
|
activityStack.clear();
|
}
|
|
|
/**
|
* 获取ActivitySize
|
*/
|
public int getActivitySize() {
|
return activityStack.size();
|
}
|
|
/**
|
* 获取当前的Activity
|
*
|
* @return -
|
*/
|
public Activity getLastActivity() {
|
if (activityStack.size() > 0) {
|
return activityStack.get(activityStack.size() - 1);
|
}
|
return null;
|
}
|
|
|
|
|
/**
|
* 获取LoadingDialog
|
*
|
* @return LoadingDialog
|
*/
|
public LoadingDialog getLoadingDialog() {
|
Activity activity = getLastActivity();
|
if (loadingDialog == null && activity != null) {
|
loadingDialog = new LoadingDialog(activity, R.style.Custom_Dialog);
|
}
|
return loadingDialog;
|
}
|
|
/**
|
* 开始Loading
|
*/
|
public void showLoading() {
|
getLoadingDialog().start();
|
}
|
|
/**
|
* 开始Loading
|
*
|
* @param mes 自定义文本
|
*/
|
public void showLoading(String mes) {
|
getLoadingDialog().start();
|
getLoadingDialog().setText(mes);
|
}
|
|
/**
|
* 停止隐藏Loading
|
*/
|
public void hideLoading() {
|
HdlThreadLogic.runMainThread(new Runnable() {
|
@Override
|
public void run() {
|
if (loadingDialog != null && loadingDialog.isShowing()) {
|
loadingDialog.stop();
|
}
|
}
|
}, null, null);
|
}
|
|
|
// /**
|
// * 判断当前应用是否是debug状态
|
// */
|
// public static boolean isApkInDebug(Context context) {
|
// try {
|
// ApplicationInfo info = context.getApplicationInfo();
|
// return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
|
// } catch (Exception e) {
|
// return false;
|
// }
|
// }
|
|
|
}
|