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)) {