Skip to content

Commit

Permalink
1、新增自定义下载路径的配置方法;2、新增全局配置自定义Retrofit的Factory方法
Browse files Browse the repository at this point in the history
  • Loading branch information
lygttpod committed Dec 8, 2018
1 parent e92a3ff commit 1202c5e
Show file tree
Hide file tree
Showing 8 changed files with 156 additions and 14 deletions.
7 changes: 7 additions & 0 deletions app/src/main/java/com/allen/rxhttputils/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@
import com.allen.library.RxHttpUtils;
import com.allen.library.config.OkHttpConfig;
import com.allen.library.cookie.store.SPCookieStore;
import com.allen.library.gson.GsonAdapter;

import java.util.HashMap;
import java.util.Map;

import okhttp3.OkHttpClient;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.converter.scalars.ScalarsConverterFactory;


/**
Expand Down Expand Up @@ -96,6 +100,9 @@ private void initCustomRxHttpUtils() {
.getInstance()
.init(this)
.config()
//自定义factory的用法
//.setCallAdapterFactory(RxJava2CallAdapterFactory.create())
//.setConverterFactory(ScalarsConverterFactory.create(),GsonConverterFactory.create(GsonAdapter.buildGson()))
//配置全局baseUrl
.setBaseUrl("https://api.douban.com/")
//开启全局配置
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/com/allen/rxhttputils/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ protected void onSuccess(Top250Bean top250Bean) {
final String fileName = "alipay.apk";
RxHttpUtils
.downloadFile(url)
//.subscribe(new DownloadObserver(fileName,destFileDir) 其中 destFileDir是自定义下载存储路径
.subscribe(new DownloadObserver(fileName) {
//可以去下下载
@Override
Expand Down
2 changes: 1 addition & 1 deletion library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ android {
minSdkVersion 14
targetSdkVersion 27
versionCode 218
versionName "2.1.8"
versionName "2.1.9"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

Expand Down
79 changes: 79 additions & 0 deletions library/src/main/java/com/allen/library/config/RetrofitConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.allen.library.config;


import retrofit2.CallAdapter;
import retrofit2.Converter;


/**
* <pre>
* @author : Allen
* e-mail : [email protected]
* date : 2018/12/08
* desc : RetrofitFactory的配置
* version : 1.0
* </pre>
*/
public class RetrofitConfig {

private static RetrofitConfig instance = null;


private CallAdapter.Factory[] callAdapterFactory;

private Converter.Factory[] converterFactory;

private RetrofitConfig() {
}

public static RetrofitConfig getInstance() {

if (instance == null) {
synchronized (RetrofitConfig.class) {
if (instance == null) {
instance = new RetrofitConfig();
}
}

}
return instance;
}

/**
* 添加CallAdapterFactory
*
* @param factories CallAdapter.Factory
*/
public void addCallAdapterFactory(CallAdapter.Factory... factories) {
this.callAdapterFactory = factories;

}

/**
* 添加ConverterFactory
*
* @param factories Converter.Factory
*/
public void addConverterFactory(Converter.Factory... factories) {
this.converterFactory = factories;
}

/**
* 获取CallAdapter.Factory
*
* @return
*/
public CallAdapter.Factory[] getCallAdapterFactory() {
return callAdapterFactory;
}

/**
* 获取Converter.Factory
*
* @return
*/
public Converter.Factory[] getConverterFactory() {
return converterFactory;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* <p>
*
* @author Allen
* 保存下载的文件
* 保存下载的文件
*/

public class DownloadManager {
Expand All @@ -26,12 +26,13 @@ public class DownloadManager {
*
* @param response ResponseBody
* @param destFileName 文件名(包括文件后缀)
* @param destFileDir 文件下载路径
* @return 返回
* @throws IOException
*/
public File saveFile(ResponseBody response, final String destFileName, ProgressListener progressListener) throws IOException {
public File saveFile(ResponseBody response, String destFileName, String destFileDir, ProgressListener progressListener) throws IOException {

String destFileDir = RxHttpUtils.getContext().getExternalFilesDir(null) + File.separator;
String defaultDestFileDir = RxHttpUtils.getContext().getExternalFilesDir(null) + File.separator;

long contentLength = response.contentLength();
InputStream is = null;
Expand All @@ -43,7 +44,8 @@ public File saveFile(ResponseBody response, final String destFileName, ProgressL

long sum = 0;

File dir = new File(destFileDir);
File dir = new File(null == destFileDir ? defaultDestFileDir : destFileDir);

if (!dir.exists()) {
dir.mkdirs();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.allen.library.download;

import android.annotation.SuppressLint;
import android.app.Dialog;

import com.allen.library.manage.RxHttpManager;
import com.allen.library.observer.CommonObserver;

import java.io.IOException;

Expand All @@ -28,11 +26,17 @@
public abstract class DownloadObserver extends BaseDownloadObserver {

private String fileName;
private String destFileDir;

public DownloadObserver(String fileName) {
this.fileName = fileName;
}

public DownloadObserver(String fileName, String destFileDir) {
this.fileName = fileName;
this.destFileDir = destFileDir;
}


/**
* 失败回调
Expand Down Expand Up @@ -95,7 +99,7 @@ public void onSubscribe(Disposable d) {
@Override
public void onNext(ResponseBody responseBody) {
try {
new DownloadManager().saveFile(responseBody, fileName, new ProgressListener() {
new DownloadManager().saveFile(responseBody, fileName, destFileDir, new ProgressListener() {
@Override
public void onResponseProgress(final long bytesRead, final long contentLength, final int progress, final boolean done, final String filePath) {
Observable
Expand Down
32 changes: 32 additions & 0 deletions library/src/main/java/com/allen/library/http/GlobalRxHttp.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package com.allen.library.http;

import com.allen.library.config.RetrofitConfig;

import java.util.HashMap;

import okhttp3.OkHttpClient;
import retrofit2.CallAdapter;
import retrofit2.Converter;
import retrofit2.Retrofit;

/**
Expand Down Expand Up @@ -39,6 +43,34 @@ public static GlobalRxHttp getInstance() {
return instance;
}

/**
* 为Retrofit设置CallAdapterFactory
* 注意:需在调用SetBaseUrl之前调用
*
* @param factories callAdapterFactory
* @return CallAdapterFactory[]
*/
public GlobalRxHttp setCallAdapterFactory(CallAdapter.Factory... factories) {
if (null != factories) {
RetrofitConfig.getInstance().addCallAdapterFactory(factories);
}
return this;
}

/**
* 为Retrofit设置ConverterFactory
* 注意:需在调用SetBaseUrl之前调用
*
* @param factories converterFactory
* @return ConverterFactory[]
*/
public GlobalRxHttp setConverterFactory(Converter.Factory... factories) {
if (null != factories) {
RetrofitConfig.getInstance().addConverterFactory(factories);
}
return this;
}

/**
* 设置baseUrl
*
Expand Down
29 changes: 23 additions & 6 deletions library/src/main/java/com/allen/library/http/RetrofitClient.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package com.allen.library.http;

import android.util.Log;

import com.allen.library.config.OkHttpConfig;
import com.allen.library.config.RetrofitConfig;
import com.allen.library.gson.GsonAdapter;
import com.allen.library.interceptor.RxHttpLogger;

import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.CallAdapter;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
Expand All @@ -35,10 +36,26 @@ public RetrofitClient() {

initDefaultOkHttpClient();

mRetrofitBuilder = new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(GsonAdapter.buildGson()));
mRetrofitBuilder = new Retrofit.Builder();

CallAdapter.Factory[] callAdapterFactories = RetrofitConfig.getInstance().getCallAdapterFactory();
Converter.Factory[] converterFactories = RetrofitConfig.getInstance().getConverterFactory();

if (null != callAdapterFactories && callAdapterFactories.length > 0) {
for (CallAdapter.Factory factory : callAdapterFactories) {
mRetrofitBuilder.addCallAdapterFactory(factory);
}
} else {
mRetrofitBuilder.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
}
if (null != converterFactories && converterFactories.length > 0) {
for (Converter.Factory factory : converterFactories) {
mRetrofitBuilder.addConverterFactory(factory);
}
} else {
mRetrofitBuilder.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(GsonAdapter.buildGson()));
}
}

private void initDefaultOkHttpClient() {
Expand Down

0 comments on commit 1202c5e

Please sign in to comment.