| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- * 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网络请求框架
- * <p>
- * 注:一般在Aplication,或者基类中配置,只需要调用一次即可
- * <p>
- * 可以配置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
- }
- }
|