| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- package eVVM.apk.app;
- import android.app.Application;
- import android.content.Context;
- import android.support.multidex.MultiDex;
- import android.util.Log;
- import com.allen.library.RxHttpUtils;
- import com.allen.library.config.OkHttpConfig;
- import com.allen.library.cookie.store.SPCookieStore;
- import com.allen.library.interfaces.BuildHeadersListener;
- import com.allen.rxhttputilslibrary.BuildConfig;
- import com.hjq.image.ImageLoader;
- import com.hjq.toast.ToastUtils;
- import java.net.URLEncoder;
- import java.util.HashMap;
- import java.util.Map;
- import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper;
- import cn.jpush.android.api.JPushInterface;
- import eVVM.apk.api.ApiUrl;
- import eVVM.apk.helper.SPUtils;
- import eVVM.apk.other.EventBusManager;
- import okhttp3.OkHttpClient;
- public class MyApplication extends Application {
- private static Application app = null;
- @Override
- public void onCreate() {
- super.onCreate();
- app = this;
- initSDK(this);
- }
- /**
- * 初始化一些第三方框架
- */
- public static void initSDK(Application application) {
- /**
- * 必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回
- * 第一个参数:应用程序上下文
- * 第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的 View 的 class 添加到该集合中,目前在库中已经添加了 WebView 和 SurfaceView
- */
- BGASwipeBackHelper.init(application, null);
- // 初始化吐司工具类
- ToastUtils.init(application);
- // 初始化图片加载器
- ImageLoader.init(application);
- SPUtils.getInstance().init(application);
- // 初始化 EventBus
- EventBusManager.init();
- // 初始化友盟 SDK
- // UmengClient.init(application);
- //初始化网络请求框架 RxHttpUtils :rxjava2+retrofit+okhttp3组合封装
- OkHttpClient okHttpClient = new OkHttpConfig
- .Builder(application)
- //全局的请求头信息
- .setHeaders(new BuildHeadersListener() {
- @Override
- public Map<String, String> buildHeaders() {
- String user_token = (String) SPUtils.get("USER_TOKEN", "");
- HashMap<String, String> hashMap = new HashMap<>();
- /*hashMap.put("appVersion", BuildConfig.VERSION_NAME);
- hashMap.put("client", "android");
- hashMap.put("channelId", "channelId");//渠道
- hashMap.put("networkType", "networkType");//网络类型
- hashMap.put("platform", "platform");//平台
- hashMap.put("sysVersion", "sysVersion");//系统版本号
- hashMap.put("device", "device");//设备信息
- hashMap.put("screen", "screen");//屏幕大小
- hashMap.put("uuid", "uuid");//设备唯一码
- hashMap.put("version", "version");//app版本
- hashMap.put("apiVersion", "apiVersion");//api版本*/
- hashMap.put("Authorization", "Bearer" + user_token);
- //hashMap.put("other_header", URLEncoder.encode("中文需要转码"));
- return hashMap;
- }
- })
- //开启缓存策略(默认false)
- //1、在有网络的时候,先去读缓存,缓存时间到了,再去访问网络获取数据;
- //2、在没有网络的时候,去读缓存中的数据。
- .setCache(true)
- .setHasNetCacheTime(10)//默认有网络时候缓存60秒
- .setNoNetCacheTime(3600)//默认有网络时候缓存3600秒
- //全局持久话cookie,保存到内存(new MemoryCookieStore())或者保存到本地(new SPCookieStore(this))
- //不设置的话,默认不对cookie做处理
- .setCookieType(new SPCookieStore(application))
- //可以添加自己的拦截器(比如使用自己熟悉三方的缓存库等等)
- //.setAddInterceptor(null)
- //全局ssl证书认证
- //1、信任所有证书,不安全有风险(默认信任所有证书)
- //.setSslSocketFactory()
- //2、使用预埋证书,校验服务端证书(自签名证书)
- //.setSslSocketFactory(cerInputStream)
- //3、使用bks证书和密码管理客户端证书(双向认证),使用预埋证书,校验服务端证书(自签名证书)
- //.setSslSocketFactory(bksInputStream,"123456",cerInputStream)
- //全局超时配置
- .setReadTimeout(10)
- //全局超时配置
- .setWriteTimeout(10)
- //全局超时配置
- .setConnectTimeout(10)
- //全局是否打开请求log日志
- .setDebug(true)
- .build();
- /* //一个项目多url的配置方法(这种写法的前提是事先已经知道所有的baseUrl了)
- RxUrlManager.getInstance().setMultipleUrl(urlMap);
- //如果是动态从服务器获取的baseUrl的话也可以添加进来
- // key是对url做区分使用,value就是服务器下发的baseUrl(baseUrl必须以"xxx/"斜杠结尾,retrofit的要求)
- RxUrlManager.getInstance().addUrl("urlKey", "urlValue");
- */
- RxHttpUtils
- .getInstance()
- .init(application)
- .config()
- //使用自定义factory的用法
- //.setCallAdapterFactory(RxJava2CallAdapterFactory.create())
- //.setConverterFactory(ScalarsConverterFactory.create(),GsonConverterFactory.create(GsonAdapter.buildGson()))
- //配置全局baseUrl
- .setBaseUrl(ApiUrl.BASE_URL)
- //开启全局配置
- .setOkClient(okHttpClient);
- JPushInterface.setDebugMode(true);
- JPushInterface.init(application);
- }
- /**
- * 获取Application的Context
- **/
- public static Context getAppContext() {
- if (app == null)
- return null;
- return app.getApplicationContext();
- }
- @Override
- protected void attachBaseContext(Context base) {
- super.attachBaseContext(base);
- // 使用 Dex分包
- MultiDex.install(this);
- }
- }
|