package com.hdl.photovoltaic.utils; import android.app.Activity; 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.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 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 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 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 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(); // } // } } /** * 结束所有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; // } // } }