package com.basic.security.base; import android.app.Activity; import android.app.Application; import android.app.Service; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.util.DisplayMetrics; import java.lang.reflect.Field; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.basic.security.utils.CrashHandler; import com.facebook.drawee.backends.pipeline.Fresco; public class BaseApplication extends Application { private static BaseApplication application; public Activity activity; public Map devInfo = new HashMap<>(); public ExecutorService executorService = Executors.newCachedThreadPool(); private List activitys = new LinkedList<>(); private List services = new LinkedList<>(); @Override public void onCreate() {// super.onCreate(); application = this; Fresco.initialize(this); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { public void onActivityCreated(Activity activity, Bundle bundle) {} public void onActivityStarted(Activity activity) {} public void onActivityPaused(Activity activity) {} public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {} public void onActivityStopped(Activity activity) {} public void onActivityResumed(Activity activity) { application.activity = activity; } public void onActivityDestroyed(Activity activity) {} }); init(); Fresco.initialize(this); } public void init() { com.basic.security.utils.CrashHandler.getInstance().init(this); PackageManager packageManager = getPackageManager(); try { PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES); if (packageInfo != null) { devInfo.put("versionName", packageInfo.versionName); devInfo.put("versionCode", packageInfo.versionCode + ""); } Field[] fields = Build.class.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); devInfo.put(field.getName(), field.get(null).toString()); } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } // Config.init(); } public static BaseApplication getApplication() {// return application; } @Override public void onTerminate() { super.onTerminate(); } public int dp2px(int dp) { int px = 0; DisplayMetrics dm = getResources().getDisplayMetrics(); px = (int) (dp * dm.density + 0.5); return px; } public int px2dp(int px) { int dp = 0; DisplayMetrics dm = getResources().getDisplayMetrics(); dp = (int) (px / dm.density + 0.5); return dp; } public void addActivity(Activity activity) { activitys.add(activity); } public void removeActivity(Activity activity) { activitys.remove(activity); } public void addService(Service service) { services.add(service); } public void removeService(Service service) { services.remove(service); } public void closeApplication() { closeActivitys(); closeServices(); } private void closeActivitys() { ListIterator iterator = activitys.listIterator(); while (iterator.hasNext()) { Activity activity = iterator.next(); if (activity != null) { activity.finish(); } } } private void closeServices() { ListIterator iterator = services.listIterator(); while (iterator.hasNext()) { Service service = iterator.next(); if (service != null) { stopService(new Intent(this, service.getClass())); } } } }