09535e226ff509fbfe2f59cba85e3b64a2a32800.svn-base 6.6 KB

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