From a121f3d2bda723b389884021b3bf93ddd012334f Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 5 Jan 2021 14:02:48 +0800 Subject: [PATCH] httpdns singleton --- .idea/gradle.xml | 1 + .../com/mogo/launcher/MogoApplication.java | 12 ++++++ .../mogo/httpdns/IHttpDnsLocationChanged.java | 13 +++++++ .../java/com/mogo/httpdns/IMogoHttpDns.java | 10 +++++ foudations/httpdns-mogo/build.gradle | 2 - .../com/mogo/httpdns/mogo/MogoHttpDns.java | 18 +++++---- .../base/websocket/WebSocketDnsManager.java | 2 +- .../com/mogo/commons/AbsMogoApplication.java | 6 +++ .../utils/httpdns/HttpSimpleLocation.java | 37 +++++++++++++++++++ 9 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/httpdns/HttpSimpleLocation.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 426ff6b360..8efbfa420e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,6 +85,7 @@ diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index b21ec92c05..02b837e126 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -12,6 +12,7 @@ import com.bytedance.boost_multidex.BoostMultiDex; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.Utils; +import com.mogo.map.location.MogoLocation; import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; import com.mogo.module.carchatting.card.CallChatConstant; import com.mogo.module.common.MogoApisHandler; @@ -30,6 +31,7 @@ import com.mogo.service.passport.IMogoTicketCallback; import com.mogo.test.crashreport.ITestCrashReportProvider; import com.mogo.utils.ProcessUtils; import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.httpdns.HttpSimpleLocation; import com.mogo.utils.logger.LogLevel; import com.mogo.utils.logger.Logger; import com.mogo.utils.storage.SharedPrefsMgr; @@ -157,6 +159,16 @@ public class MogoApplication extends AbsMogoApplication { prepareBaseService( apis, 2_000L ); } + @Override + protected HttpSimpleLocation getCurrentLocation() { + MogoLocation location = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(this).getLastKnowLocation(); + if (location == null) { + return null; + }else { + return new HttpSimpleLocation(location.getCityCode(), location.getLatitude(), location.getLongitude()); + } + } + /** * 基础服务:passport、location、socket */ diff --git a/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java b/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java new file mode 100644 index 0000000000..3753ebc90e --- /dev/null +++ b/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java @@ -0,0 +1,13 @@ +package com.mogo.httpdns; + +import android.location.Location; + +import com.mogo.utils.httpdns.HttpSimpleLocation; + +public interface IHttpDnsLocationChanged { + /** + * 获取当前定位 + * @return 当前定位 + */ + HttpSimpleLocation getLocation(); +} diff --git a/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IMogoHttpDns.java b/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IMogoHttpDns.java index 725d63cc72..f07ea004cb 100644 --- a/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IMogoHttpDns.java +++ b/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IMogoHttpDns.java @@ -1,5 +1,7 @@ package com.mogo.httpdns; +import android.content.Context; + import androidx.annotation.Keep; import androidx.annotation.Nullable; @@ -95,4 +97,12 @@ interface IMogoHttpDns extends IProvider { */ @Keep void removeHttpDnsTtlCallback(String host,int type); + + /** + * 初始化 + * + * @param context 上下文 + * @param locationChanged 定位发生变化 + */ + void init(Context context, IHttpDnsLocationChanged locationChanged); } diff --git a/foudations/httpdns-mogo/build.gradle b/foudations/httpdns-mogo/build.gradle index 6b662cab56..2c44ea5a06 100644 --- a/foudations/httpdns-mogo/build.gradle +++ b/foudations/httpdns-mogo/build.gradle @@ -37,11 +37,9 @@ dependencies { if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.httpdnsbase implementation rootProject.ext.dependencies.mogocommons - implementation rootProject.ext.dependencies.modulecommon } else { implementation project(':foudations:httpdns-base') implementation project(':foudations:mogo-commons') - implementation project(':modules:mogo-module-common') } } diff --git a/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java b/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java index 64e4ffe141..a39e7c59a1 100644 --- a/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java +++ b/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java @@ -1,7 +1,6 @@ package com.mogo.httpdns.mogo; import android.content.Context; -import android.os.Debug; import android.text.TextUtils; import android.util.ArrayMap; @@ -12,14 +11,14 @@ import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.Utils; import com.mogo.httpdns.HttpDnsConst; import com.mogo.httpdns.IHttpDnsCallback; +import com.mogo.httpdns.IHttpDnsLocationChanged; import com.mogo.httpdns.IHttpDnsTtlCallback; import com.mogo.httpdns.IMogoHttpDns; import com.mogo.httpdnshelper.sdk.HttpDnsHelper; import com.mogo.httpdnshelper.sdk.bean.HttpDnsSimpleLocation; import com.mogo.httpdnshelper.sdk.listener.IHttpDnsCurrentLocation; import com.mogo.httpdnshelper.sdk.listener.OnAddressChangedListener; -import com.mogo.map.location.MogoLocation; -import com.mogo.module.common.MogoApisHandler; +import com.mogo.utils.httpdns.HttpSimpleLocation; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.HttpDns; @@ -83,13 +82,18 @@ public class MogoHttpDns implements IMogoHttpDns, HttpDns, OnAddressChangedListe @Override public void init(final Context context) { + + } + + @Override + public void init(Context context, final IHttpDnsLocationChanged locationChanged) { httpDnsHelper = new HttpDnsHelper.Builder().setContext(context).setEnv(DebugConfig.getNetMode()).setSn(Utils.getSn()).setShowDebugLog(true).setLoopCheckDelay(15 * 60 * 1000).setCurrentLocation(new IHttpDnsCurrentLocation() { @org.jetbrains.annotations.Nullable @Override public HttpDnsSimpleLocation getCurrentLocation() { - MogoLocation last = MogoApisHandler.getInstance().getApis().getMapServiceApi().getSingletonLocationClient(context).getLastKnowLocation(); - if (last != null) { - return new HttpDnsSimpleLocation(last.getCityCode(), last.getLatitude(), last.getLongitude()); + HttpSimpleLocation simpleLocation = locationChanged.getLocation(); + if (simpleLocation != null) { + return new HttpDnsSimpleLocation("0734", simpleLocation.getLat(), simpleLocation.getLon()); } return null; } @@ -121,7 +125,7 @@ public class MogoHttpDns implements IMogoHttpDns, HttpDns, OnAddressChangedListe } @Override - public void onAddressChanged(@org.jetbrains.annotations.Nullable Map map) { + public void onAddressChanged(Map map) { if (map != null) { for (String key : map.keySet()) { if (ttlCallbackMap.get(key) != null) { diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java index 8a46cb0ba2..4605e4b9ec 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java @@ -28,7 +28,7 @@ public class WebSocketDnsManager { public void getHttpDnsIp(WebSocketDns webSocketDns) { this.webSocketDns = webSocketDns; - IMogoHttpDns mogoHttpDns = ARouter.getInstance().navigation(IMogoHttpDns.class); + IMogoHttpDns mogoHttpDns = MogoHttpDnsHandler.getHttpDnsApi(); ThreadPoolService.execute(() -> mogoHttpDns.getHttpDnsIp(WebSocketConstant.getDomain(), HttpDnsConst.HTTP_DNS_ADDRESS_TYPE_WS,false, ip -> { Logger.d(TAG, "getHttpDnsIp ip : " + ip + " , 得到Dns IP,准备回调 初始化webSocket"); this.cacheIp = ip; diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 636cf85304..3cf6518c85 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -24,6 +24,7 @@ import com.mogo.httpdns.MogoHttpDnsHandler; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.TipDrawable; import com.mogo.utils.TipToast; +import com.mogo.utils.httpdns.HttpSimpleLocation; import com.mogo.utils.network.NetConfig; import java.security.SecureRandom; @@ -87,6 +88,7 @@ public abstract class AbsMogoApplication extends Application { } private void syncInit() { + MogoHttpDnsHandler.getHttpDnsApi().init(this, this::getCurrentLocation); TipToast.init( this, ( ( context, message, tipDrawable ) -> { if ( TextUtils.isEmpty( message ) ) { return null; @@ -100,6 +102,10 @@ public abstract class AbsMogoApplication extends Application { } ) ); } + protected HttpSimpleLocation getCurrentLocation(){ + return null; + } + private View generateToastView( Context context, String message, TipDrawable tipDrawable){ View contentView; if(tipDrawable==null) { diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/httpdns/HttpSimpleLocation.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/httpdns/HttpSimpleLocation.java new file mode 100644 index 0000000000..f8589f8f18 --- /dev/null +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/httpdns/HttpSimpleLocation.java @@ -0,0 +1,37 @@ +package com.mogo.utils.httpdns; + +public class HttpSimpleLocation { + private String cityCode; + private double lat; + private double lon; + + public HttpSimpleLocation(String cityCode, double lat, double lon) { + this.cityCode = cityCode; + this.lat = lat; + this.lon = lon; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } +}