From 697a0ce63855d8629f80d8f7f8ec2e56544c8280 Mon Sep 17 00:00:00 2001 From: jeff <404407685@qq.com> Date: Wed, 20 Jan 2021 00:45:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0RetrofitFactory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- foudations/mogo-commons/build.gradle | 4 +- .../java/com/mogo/cloud/commons/Sample.kt | 5 +++ .../cloud/commons/network/OkHttpFactory.kt | 22 +++++++++++ .../cloud/commons/network/RetrofitFactory.kt | 38 +++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/Sample.kt create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle index 98a4c57..1303b12 100644 --- a/foudations/mogo-commons/build.gradle +++ b/foudations/mogo-commons/build.gradle @@ -33,5 +33,7 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation rootProject.ext.dependencies.retrofit - + implementation rootProject.ext.dependencies.retrofitadapter + implementation rootProject.ext.dependencies.retrofitconvertergson + implementation rootProject.ext.dependencies.retrofitconverterscalars } \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/Sample.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/Sample.kt new file mode 100644 index 0000000..994a511 --- /dev/null +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/Sample.kt @@ -0,0 +1,5 @@ +package com.mogo.cloud.commons + +class Sample { + +} \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt new file mode 100644 index 0000000..55fb75c --- /dev/null +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/OkHttpFactory.kt @@ -0,0 +1,22 @@ +package com.mogo.cloud.commons.network + +import okhttp3.OkHttpClient + + +/** + * + * @Author: wujifei + * @CreateDate: 1/20/21 12:16 AM + * @Description: 描述 + */ +class OkHttpFactory private constructor() { + + companion object { + val okHttpClient: OkHttpClient by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + val builder = OkHttpClient.Builder() + builder.build() + } + + + } +} \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/RetrofitFactory.kt b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/RetrofitFactory.kt index 6db0e8b..5d8cbd3 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/RetrofitFactory.kt +++ b/foudations/mogo-commons/src/main/java/com/mogo/cloud/commons/network/RetrofitFactory.kt @@ -1,7 +1,10 @@ package com.mogo.cloud.commons.network import androidx.collection.ArrayMap +import okhttp3.OkHttpClient import retrofit2.Retrofit +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory +import retrofit2.converter.gson.GsonConverterFactory /** * @@ -11,4 +14,39 @@ import retrofit2.Retrofit */ class RetrofitFactory private constructor() { + companion object { + private val sRpcServiceMap: MutableMap = ArrayMap() + private val sRpcNoAdapterServiceMap: MutableMap = ArrayMap() + + @Synchronized + fun getInstance(baseUrl: String): Retrofit? { + var target = sRpcServiceMap[baseUrl] + if (target == null) { + target = Retrofit.Builder() + .client(OkHttpFactory.okHttpClient) + .baseUrl(baseUrl) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .build() + sRpcServiceMap[baseUrl] = target + } + return target + } + + @Synchronized + fun getInstanceNoCallAdapter(baseUrl: String): Retrofit? { + var target = sRpcNoAdapterServiceMap[baseUrl] + if (target == null) { + target = Retrofit.Builder() + .client(OkHttpFactory.okHttpClient) + .baseUrl(baseUrl) + .addConverterFactory(GsonConverterFactory.create()) + .build() + sRpcNoAdapterServiceMap[baseUrl] = target + } + return target + } + } + + } \ No newline at end of file