/* * Copyright 2018 Zhenjie Yan. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.qingdaofushan.home.component; import android.app.Application; import android.content.Context; import android.os.Environment; import androidx.annotation.NonNull; import com.kongzue.dialogx.DialogX; import com.lzy.okgo.OkGo; import com.lzy.okgo.cache.CacheEntity; import com.lzy.okgo.cache.CacheMode; import com.lzy.okgo.cookie.CookieJarImpl; import com.lzy.okgo.cookie.store.SPCookieStore; import com.lzy.okgo.interceptor.HttpLoggingInterceptor; import com.yanzhenjie.andserver.util.IOUtils; import java.io.File; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import okhttp3.OkHttpClient; public class App extends Application { private static final long MILLISECONDS = 5000; private static App mInstance; private File mRootDir; @Override public void onCreate() { super.onCreate(); if (mInstance == null) { mInstance = this; initRootPath(this); } initOkGo(); //初始化弹窗 DialogX.init(this); } @NonNull public static App getInstance() { return mInstance; } @NonNull public File getRootDir() { return mRootDir; } private void initRootPath(Context context) { if (mRootDir != null) { return; } if (FileUtils.storageAvailable()) { mRootDir = Environment.getExternalStorageDirectory(); } else { mRootDir = context.getFilesDir(); } mRootDir = new File(mRootDir, "HomeCareSAS"); IOUtils.createFolder(mRootDir); } /** * 初始化okGo网络请求框架 *

* 注:一般在Aplication,或者基类中配置,只需要调用一次即可 *

* 可以配置log开关 * 全局的超时时间 * 全局cookie管理策略 * Https配置 * 超时重连次数 * 公共的请求头和请求参数等信息 */ private void initOkGo() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("HomeCareSAS"); //Log的打印级别决定了log显示的详细程度 loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY); //log颜色级别,决定了log在控制台现实的颜色 loggingInterceptor.setColorLevel(Level.OFF); //开关LOG!!!!!!!!! builder.addInterceptor(loggingInterceptor); //全局的读取超时时间 builder.readTimeout(MILLISECONDS, TimeUnit.MILLISECONDS); //全局的写入超时时间 builder.writeTimeout(MILLISECONDS, TimeUnit.MILLISECONDS); //全局的连接超时时间 builder.connectTimeout(MILLISECONDS, TimeUnit.MILLISECONDS); //使用sp保持cookie,如果cookie不过期,则一直有效 builder.cookieJar(new CookieJarImpl(new SPCookieStore(this))); OkGo.getInstance().init(this) //必须调用初始化 .setOkHttpClient(builder.build()) //建议设置OkHttpClient,不设置将使用默认的 .setCacheMode(CacheMode.REQUEST_FAILED_READ_CACHE) //全局统一缓存模式,默认不使用缓存,可以不传 .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE) //全局统一缓存时间,默认永不过期,可以不传 .setRetryCount(1); //全局统一超时重连次数,默认为三次,那么最差的情况会请求4次(一次原始请求,三次重连请求),不需要可以设置为0 } }