f63038fd9ae39b9170e8d5c89e7fbdf4efccb1f1.svn-base 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package eVVM.apk.app;
  2. import android.app.Application;
  3. import android.content.Context;
  4. import android.support.multidex.MultiDex;
  5. import android.util.Log;
  6. import com.allen.library.RxHttpUtils;
  7. import com.allen.library.config.OkHttpConfig;
  8. import com.allen.library.cookie.store.SPCookieStore;
  9. import com.allen.library.interfaces.BuildHeadersListener;
  10. import com.allen.rxhttputilslibrary.BuildConfig;
  11. import com.hjq.image.ImageLoader;
  12. import com.hjq.toast.ToastUtils;
  13. import java.net.URLEncoder;
  14. import java.util.HashMap;
  15. import java.util.Map;
  16. import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper;
  17. import cn.jpush.android.api.JPushInterface;
  18. import eVVM.apk.api.ApiUrl;
  19. import eVVM.apk.helper.SPUtils;
  20. import okhttp3.OkHttpClient;
  21. public class MyApplication extends Application {
  22. @Override
  23. public void onCreate() {
  24. super.onCreate();
  25. initSDK(this);
  26. }
  27. /**
  28. * 初始化一些第三方框架
  29. */
  30. public static void initSDK(Application application) {
  31. /**
  32. * 必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回
  33. * 第一个参数:应用程序上下文
  34. * 第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的 View 的 class 添加到该集合中,目前在库中已经添加了 WebView 和 SurfaceView
  35. */
  36. BGASwipeBackHelper.init(application, null);
  37. // 初始化吐司工具类
  38. ToastUtils.init(application);
  39. // 初始化图片加载器
  40. ImageLoader.init(application);
  41. SPUtils.getInstance().init(application);
  42. // 初始化 EventBus
  43. // EventBusManager.init();
  44. // 初始化友盟 SDK
  45. // UmengClient.init(application);
  46. //初始化网络请求框架 RxHttpUtils :rxjava2+retrofit+okhttp3组合封装
  47. OkHttpClient okHttpClient = new OkHttpConfig
  48. .Builder(application)
  49. //全局的请求头信息
  50. .setHeaders(new BuildHeadersListener() {
  51. @Override
  52. public Map<String, String> buildHeaders() {
  53. String user_token = (String) SPUtils.get("USER_TOKEN", "");
  54. HashMap<String, String> hashMap = new HashMap<>();
  55. /*hashMap.put("appVersion", BuildConfig.VERSION_NAME);
  56. hashMap.put("client", "android");
  57. hashMap.put("channelId", "channelId");//渠道
  58. hashMap.put("networkType", "networkType");//网络类型
  59. hashMap.put("platform", "platform");//平台
  60. hashMap.put("sysVersion", "sysVersion");//系统版本号
  61. hashMap.put("device", "device");//设备信息
  62. hashMap.put("screen", "screen");//屏幕大小
  63. hashMap.put("uuid", "uuid");//设备唯一码
  64. hashMap.put("version", "version");//app版本
  65. hashMap.put("apiVersion", "apiVersion");//api版本*/
  66. hashMap.put("Authorization", "Bearer"+user_token);
  67. //hashMap.put("other_header", URLEncoder.encode("中文需要转码"));
  68. return hashMap;
  69. }
  70. })
  71. //开启缓存策略(默认false)
  72. //1、在有网络的时候,先去读缓存,缓存时间到了,再去访问网络获取数据;
  73. //2、在没有网络的时候,去读缓存中的数据。
  74. .setCache(true)
  75. .setHasNetCacheTime(10)//默认有网络时候缓存60秒
  76. .setNoNetCacheTime(3600)//默认有网络时候缓存3600秒
  77. //全局持久话cookie,保存到内存(new MemoryCookieStore())或者保存到本地(new SPCookieStore(this))
  78. //不设置的话,默认不对cookie做处理
  79. .setCookieType(new SPCookieStore(application))
  80. //可以添加自己的拦截器(比如使用自己熟悉三方的缓存库等等)
  81. //.setAddInterceptor(null)
  82. //全局ssl证书认证
  83. //1、信任所有证书,不安全有风险(默认信任所有证书)
  84. //.setSslSocketFactory()
  85. //2、使用预埋证书,校验服务端证书(自签名证书)
  86. //.setSslSocketFactory(cerInputStream)
  87. //3、使用bks证书和密码管理客户端证书(双向认证),使用预埋证书,校验服务端证书(自签名证书)
  88. //.setSslSocketFactory(bksInputStream,"123456",cerInputStream)
  89. //全局超时配置
  90. .setReadTimeout(10)
  91. //全局超时配置
  92. .setWriteTimeout(10)
  93. //全局超时配置
  94. .setConnectTimeout(10)
  95. //全局是否打开请求log日志
  96. .setDebug(true)
  97. .build();
  98. /* //一个项目多url的配置方法(这种写法的前提是事先已经知道所有的baseUrl了)
  99. RxUrlManager.getInstance().setMultipleUrl(urlMap);
  100. //如果是动态从服务器获取的baseUrl的话也可以添加进来
  101. // key是对url做区分使用,value就是服务器下发的baseUrl(baseUrl必须以"xxx/"斜杠结尾,retrofit的要求)
  102. RxUrlManager.getInstance().addUrl("urlKey", "urlValue");
  103. */
  104. RxHttpUtils
  105. .getInstance()
  106. .init(application)
  107. .config()
  108. //使用自定义factory的用法
  109. //.setCallAdapterFactory(RxJava2CallAdapterFactory.create())
  110. //.setConverterFactory(ScalarsConverterFactory.create(),GsonConverterFactory.create(GsonAdapter.buildGson()))
  111. //配置全局baseUrl
  112. .setBaseUrl(ApiUrl.BASE_URL)
  113. //开启全局配置
  114. .setOkClient(okHttpClient);
  115. JPushInterface.setDebugMode(true);
  116. JPushInterface.init(application);
  117. }
  118. @Override
  119. protected void attachBaseContext(Context base) {
  120. super.attachBaseContext(base);
  121. // 使用 Dex分包
  122. MultiDex.install(this);
  123. }
  124. }