From 80689307b2ad6095819f895b8dfd301f2bda45a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 7 Jan 2021 11:26:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86V2XApiServiceFactory?= =?UTF-8?q?.java=20=E8=A7=A3=E5=86=B3HttpDns=E7=9A=84=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E9=97=AE=E9=A2=98=20V2XApiServiceFactory?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=8E=B7=E5=8F=96=E6=8C=87=E5=AE=9A=E7=9A=84?= =?UTF-8?q?=E5=9F=9F=E5=90=8D=E5=AF=B9=E5=BA=94=E7=9A=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2x/network/V2XApiServiceFactory.java | 97 +++++++++++++++++++ .../v2x/network/V2XShareNetworkModel.java | 24 ++--- 2 files changed, 106 insertions(+), 15 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiServiceFactory.java diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiServiceFactory.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiServiceFactory.java new file mode 100644 index 0000000000..21dfa42287 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiServiceFactory.java @@ -0,0 +1,97 @@ +package com.mogo.module.v2x.network; + +import android.content.Context; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.module.common.constants.HostConst; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.network.IMogoNetwork; + +/** + * 应对不同接口对应不同服务域名的工厂累 + */ +public class V2XApiServiceFactory { + + private static V2XApiService mDevaApiService; + private static V2XApiService mDataApiService; + private static V2XApiService mLauncherSnapshotApiService; + private static V2XApiService mGeoFenceCarServiceApiService; + private static V2XApiService mRealtimeLocationApiService; + private static V2XApiService mDataServiceApiService; + + /** + * 获取指定域名下的 API 服务 + */ + public static V2XApiService getApiService(Context context, String netHost) { + IMogoNetwork network = (IMogoNetwork) ARouter.getInstance() + .build(MogoServicePaths.PATH_SERVICES_NETWORK) + .navigation(context); + return network.create(V2XApiService.class, netHost); + } + + public static V2XApiService getDevaApiService(Context context) { + if (mDevaApiService == null) { + synchronized (V2XApiServiceFactory.class) { + if (mDevaApiService == null) { + mDevaApiService = getApiService(context, HostConst.DEVA_HOST); + } + } + } + return mDevaApiService; + } + + public static V2XApiService getDataApiService(Context context) { + if (mDataApiService == null) { + synchronized (V2XApiServiceFactory.class) { + if (mDataApiService == null) { + mDataApiService = getApiService(context, HostConst.DATA_SERVICE_HOST); + } + } + } + return mDataApiService; + } + + public static V2XApiService getLauncherSnapshotApiService(Context context) { + if (mLauncherSnapshotApiService == null) { + synchronized (V2XApiServiceFactory.class) { + if (mLauncherSnapshotApiService == null) { + mLauncherSnapshotApiService = getApiService(context, HostConst.LAUNCHER_SNAPSHOT_HOST); + } + } + } + return mLauncherSnapshotApiService; + } + + public static V2XApiService getGeoFenceCarServiceApiService(Context context) { + if (mGeoFenceCarServiceApiService == null) { + synchronized (V2XApiServiceFactory.class) { + if (mGeoFenceCarServiceApiService == null) { + mGeoFenceCarServiceApiService = getApiService(context, HostConst.GEOFENCE_HOST); + } + } + } + return mGeoFenceCarServiceApiService; + } + + public static V2XApiService getRealtimeLocationApiService(Context context) { + if (mRealtimeLocationApiService == null) { + synchronized (V2XApiServiceFactory.class) { + if (mRealtimeLocationApiService == null) { + mRealtimeLocationApiService = getApiService(context, HostConst.REALTIME_LOCATION_HOST); + } + } + } + return mRealtimeLocationApiService; + } + + public static V2XApiService getDataServiceApiService(Context context) { + if (mDataServiceApiService == null) { + synchronized (V2XApiServiceFactory.class) { + if (mDataServiceApiService == null) { + mDataServiceApiService = getApiService(context, HostConst.DATA_SERVICE_HOST); + } + } + } + return mDataServiceApiService; + } +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java index 8d6bb0e529..e941fcb19e 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java @@ -2,13 +2,10 @@ package com.mogo.module.v2x.network; import android.content.Context; -import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.ParamsProvider; import com.mogo.commons.network.SubscribeImpl; import com.mogo.commons.network.Utils; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.network.IMogoNetwork; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; @@ -26,21 +23,18 @@ import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; public class V2XShareNetworkModel { - private final Context mContext; - private V2XApiService mRefreshApiService; private static final String TAG = "V2XShareNetworkModel"; + private final Context mContext; public V2XShareNetworkModel(Context context) { this.mContext = context; - IMogoNetwork network = (IMogoNetwork) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_NETWORK).navigation(context); - this.mRefreshApiService = network.create(V2XApiService.class, HttpConstant.Companion.getNetHost()); } - /* + /** * 两个任务串行 * 1.分享次数,热心指数 * 2.分享列表 - * */ + */ public void getShareEventResponse(int page, int size, V2XRefreshCallback callback) { Observable indexObservable = Observable.create(new ObservableOnSubscribe() { @@ -99,9 +93,9 @@ public class V2XShareNetworkModel { }); } - /* + /** * 热心指数 - * */ + */ public void getShareIndex(V2XRefreshCallback callback) { final ParamsProvider.Builder builder = new ParamsProvider.Builder(mContext); HashMap hashMap = new HashMap<>(); @@ -109,7 +103,7 @@ public class V2XShareNetworkModel { builder.append("data", GsonUtil.jsonFromObject(hashMap)); Map parameters = builder.build(); //热心指数 - mRefreshApiService.getEnthusiasmIndex(parameters) + V2XApiServiceFactory.getDevaApiService(mContext).getEnthusiasmIndex(parameters) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create((mContext))) { @@ -140,9 +134,9 @@ public class V2XShareNetworkModel { } - /* + /** * 分享列表 - * */ + */ public void getShareEventList(int page, int size, V2XRefreshCallback callback) { final ParamsProvider.Builder builder = new ParamsProvider.Builder(mContext); @@ -153,7 +147,7 @@ public class V2XShareNetworkModel { builder.append("data", GsonUtil.jsonFromObject(hashMap)); Map parameters = builder.build(); - mRefreshApiService.getShareEventList(parameters) + V2XApiServiceFactory.getDevaApiService(mContext).getShareEventList(parameters) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {