package com.basic.security.base; import android.app.Activity; import android.app.Application; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import com.basic.security.activity.MainActivity; import com.basic.security.manager.DeviceManager; import com.basic.security.model.ModelAdapter; import com.basic.security.utils.Config; import com.basic.security.utils.Constants; import com.basic.security.utils.ExceptionUtil; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator; import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator; import com.scwang.smartrefresh.layout.api.RefreshFooter; import com.scwang.smartrefresh.layout.api.RefreshHeader; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.header.ClassicsHeader; import org.xutils.x; 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 java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import interfaces.heweather.com.interfacesmodule.view.HeConfig; public class BaseApplication extends Application { static Map localSetting = new HashMap(); private static BaseApplication application; static { SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() { @Override public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { layout.setPrimaryColorsId(com.basic.security.utils.RUtils.R_color_transparent, android.R.color.white); return new ClassicsHeader(context); } }); SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() { @Override public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { return new ClassicsFooter(context).setDrawableSize(20); } }); } public final Lock detectLock = new ReentrantLock(); public MainActivity activity; public Map devInfo = new HashMap<>(); public ExecutorService executorService = Executors.newCachedThreadPool(); private List activitys = new LinkedList<>(); private List services = new LinkedList<>(); private ModelAdapter backTime; public static BaseApplication getApplication() { return application; } public static Map getLocalSetting() { return localSetting; } public void onTerminate() { super.onTerminate(); } @Override public void onCreate() { super.onCreate(); x.Ext.init(this); application = this; init(); HeConfig.init("HE1811151724201473", "b5fe07c5d66c43d089e60baf2fa655ac"); HeConfig.switchToFreeServerNode(); Constants.deviceId = DeviceManager.getDeviceId(); testFunction(); } private void testFunction() { } 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) { ExceptionUtil.printException(e); } catch (IllegalAccessException e) { ExceptionUtil.printException(e); } Config.init(); } 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())); } } } }