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<String, String> devInfo = new HashMap<>();
|
public ExecutorService executorService = Executors.newCachedThreadPool();
|
|
private List<Activity> activitys = new LinkedList<>();
|
private List<Service> 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<Activity> iterator = activitys.listIterator();
|
while (iterator.hasNext()) {
|
Activity activity = iterator.next();
|
if (activity != null) {
|
activity.finish();
|
}
|
}
|
}
|
|
private void closeServices() {
|
ListIterator<Service> iterator = services.listIterator();
|
while (iterator.hasNext()) {
|
Service service = iterator.next();
|
if (service != null) {
|
stopService(new Intent(this, service.getClass()));
|
}
|
}
|
}
|
|
|
}
|