App.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /*
  2. * Copyright 2018 Zhenjie Yan.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.qingdaofushan.home.component;
  17. import android.app.Application;
  18. import android.content.Context;
  19. import android.os.Environment;
  20. import androidx.annotation.NonNull;
  21. import com.kongzue.dialogx.DialogX;
  22. import com.lzy.okgo.OkGo;
  23. import com.lzy.okgo.cache.CacheEntity;
  24. import com.lzy.okgo.cache.CacheMode;
  25. import com.lzy.okgo.cookie.CookieJarImpl;
  26. import com.lzy.okgo.cookie.store.SPCookieStore;
  27. import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
  28. import com.yanzhenjie.andserver.util.IOUtils;
  29. import java.io.File;
  30. import java.util.concurrent.TimeUnit;
  31. import java.util.logging.Level;
  32. import okhttp3.OkHttpClient;
  33. public class App extends Application {
  34. private static final long MILLISECONDS = 5000;
  35. private static App mInstance;
  36. private File mRootDir;
  37. @Override
  38. public void onCreate() {
  39. super.onCreate();
  40. if (mInstance == null) {
  41. mInstance = this;
  42. initRootPath(this);
  43. }
  44. initOkGo();
  45. //初始化弹窗
  46. DialogX.init(this);
  47. }
  48. @NonNull
  49. public static App getInstance() {
  50. return mInstance;
  51. }
  52. @NonNull
  53. public File getRootDir() {
  54. return mRootDir;
  55. }
  56. private void initRootPath(Context context) {
  57. if (mRootDir != null) {
  58. return;
  59. }
  60. if (FileUtils.storageAvailable()) {
  61. mRootDir = Environment.getExternalStorageDirectory();
  62. } else {
  63. mRootDir = context.getFilesDir();
  64. }
  65. mRootDir = new File(mRootDir, "HomeCareSAS");
  66. IOUtils.createFolder(mRootDir);
  67. }
  68. /**
  69. * 初始化okGo网络请求框架
  70. * <p>
  71. * 注:一般在Aplication,或者基类中配置,只需要调用一次即可
  72. * <p>
  73. * 可以配置log开关
  74. * 全局的超时时间
  75. * 全局cookie管理策略
  76. * Https配置
  77. * 超时重连次数
  78. * 公共的请求头和请求参数等信息
  79. */
  80. private void initOkGo() {
  81. OkHttpClient.Builder builder = new OkHttpClient.Builder();
  82. HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("HomeCareSAS");
  83. //Log的打印级别决定了log显示的详细程度
  84. loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
  85. //log颜色级别,决定了log在控制台现实的颜色
  86. loggingInterceptor.setColorLevel(Level.OFF);
  87. //开关LOG!!!!!!!!!
  88. builder.addInterceptor(loggingInterceptor);
  89. //全局的读取超时时间
  90. builder.readTimeout(MILLISECONDS, TimeUnit.MILLISECONDS);
  91. //全局的写入超时时间
  92. builder.writeTimeout(MILLISECONDS, TimeUnit.MILLISECONDS);
  93. //全局的连接超时时间
  94. builder.connectTimeout(MILLISECONDS, TimeUnit.MILLISECONDS);
  95. //使用sp保持cookie,如果cookie不过期,则一直有效
  96. builder.cookieJar(new CookieJarImpl(new SPCookieStore(this)));
  97. OkGo.getInstance().init(this) //必须调用初始化
  98. .setOkHttpClient(builder.build()) //建议设置OkHttpClient,不设置将使用默认的
  99. .setCacheMode(CacheMode.REQUEST_FAILED_READ_CACHE) //全局统一缓存模式,默认不使用缓存,可以不传
  100. .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) //全局统一缓存时间,默认永不过期,可以不传
  101. .setRetryCount(1); //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0
  102. }
  103. }