From 169c287f444613f262915601adbaa0ebd366fc05 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 6 Aug 2020 18:14:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90=E6=97=A5=E5=BF=97=E6=8A=93?= =?UTF-8?q?=E5=8F=96=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/entrance/EntranceFragment.java | 5 ++ .../com/mogo/module/main/MainActivity.java | 6 +++ modules/mogo-module-monitor/build.gradle | 5 ++ .../module/monitor/MogoMonitorProvider.java | 48 +++++++++++++++++-- .../com/mogo/service/IMogoServiceApis.java | 7 +++ .../mogo/service/impl/MogoServiceApis.java | 8 +++- 6 files changed, 73 insertions(+), 6 deletions(-) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index bfb66cffe1..768006b117 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -204,6 +204,11 @@ public class EntranceFragment extends MvpFragment{ + mApis.getMogoMonitorApi().showLogDebugDialog(); + return true; + }); } ConstraintLayout rootView = findViewById(R.id.module_entrance_id_top_motion_layout); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 1ee636cab7..4a6d5f4869 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -31,6 +31,7 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleProvider; +import com.mogo.service.monitor.IMogoMonitorProvider; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.logger.Logger; import com.zhidao.autopilot.support.api.AutopilotServiceManage; @@ -170,6 +171,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme hideLayout(); } } ); + + // 初始化MonitorModule + IMogoMonitorProvider monitorProvider = (IMogoMonitorProvider) ARouter.getInstance().build(MogoServicePaths.PATH_MOGO_MONITOR).navigation(this); + monitorProvider.resetActivityContext(this); + } private void startBaseService() { diff --git a/modules/mogo-module-monitor/build.gradle b/modules/mogo-module-monitor/build.gradle index af9b206ded..d91c74e164 100644 --- a/modules/mogo-module-monitor/build.gradle +++ b/modules/mogo-module-monitor/build.gradle @@ -12,6 +12,11 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + javaCompileOptions { + annotationProcessorOptions { + arguments = [AROUTER_MODULE_NAME: project.getName()] + } + } } buildTypes { diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java index 39196d2940..08bf4df033 100644 --- a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java @@ -9,10 +9,13 @@ import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.monitor.IMogoMonitorProvider; +import com.mogo.utils.logger.LogLevel; import com.mogo.utils.logger.Logger; import com.zhidao.loglib.LogInfoManager; import com.zhidao.loglib.bean.RemoteLogPushContent; +import com.zhidao.loglib.dialog.ILogDialogListener; import com.zhidao.loglib.upload.UploadManager; +import com.zhidao.loglib.util.LogInfoManagerFactory; import com.zhidao.loglib.util.LoggingNotice; import java.util.Map; @@ -22,7 +25,7 @@ import java.util.Map; * @author tongchenfei */ @Route(path = MogoMonitorConst.MODULE_PATH) -public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessageListener { +public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessageListener, ILogDialogListener { private static final String TAG = MogoMonitorConst.MODULE_NAME; private LogInfoManager manualCatchLog = null; private Map managerCache = new ArrayMap<>(); @@ -31,9 +34,9 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessage @Override public void showLogDebugDialog() { if (manualCatchLog == null) { - manualCatchLog = new LogInfoManager.Builder(context).build(); + manualCatchLog = LogInfoManagerFactory.createManualLogInfoManager(context); } - manualCatchLog.showDebugWindow(); + manualCatchLog.showDebugWindow().setDialogListener(this); } @Override @@ -57,24 +60,59 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessage @Override public void onMsgReceived(RemoteLogPushContent obj) { + Logger.d(TAG, "收到push消息: " + obj); switch (obj.getType()){ case MogoMonitorConst.START_CATCH_LOG: if (managerCache.containsKey(obj.getPkgName())) { Logger.d(TAG, "这个包名的日志正在抓了: " + obj); return; } - LogInfoManager infoManager = new LogInfoManager.Builder(context).build(); + openLoggerLevel(); + LogInfoManager infoManager = + LogInfoManagerFactory.createPushLogInfoManager(context, obj); infoManager.start(); managerCache.put(obj.getPkgName(), infoManager); break; case MogoMonitorConst.STOP_CATCH_LOG: - LogInfoManager stopManager = managerCache.get(obj.getPkgName()); + LogInfoManager stopManager = managerCache.remove(obj.getPkgName()); if (stopManager != null) { stopManager.stop(); } + closeLoggerLevel(); break; default: break; } } + + @Override + public void onLogStart() { + // 这个是通过对话框点击开始的回调 + isInManualCatchLog = true; + openLoggerLevel(); + } + + @Override + public void onLogStop() { + // 这个是通过对话框点击结束的回调 + isInManualCatchLog = false; + closeLoggerLevel(); + } + private boolean isInManualCatchLog = false; + + /** + * 放开Logger的限制 + */ + private void openLoggerLevel(){ + Logger.init(LogLevel.DEBUG); + } + + /** + * 根据状态收紧Logger的限制 + */ + private void closeLoggerLevel(){ + if (!isInManualCatchLog && managerCache.size() == 0) { + Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF ); + } + } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index b43d44aa72..cd801a0ea1 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -23,6 +23,7 @@ import com.mogo.service.module.IMogoMarkerService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; +import com.mogo.service.monitor.IMogoMonitorProvider; import com.mogo.service.network.IMogoNetwork; import com.mogo.service.obu.IMogoObuManager; import com.mogo.service.passport.IMogoPassportManager; @@ -243,4 +244,10 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoAuthManager getAuthManagerApi(); + + /** + * 获取Monitor相关api + * @return + */ + IMogoMonitorProvider getMogoMonitorApi(); } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index a623abbb69..bf6943ce4d 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -31,6 +31,7 @@ import com.mogo.service.module.IMogoMarkerService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; +import com.mogo.service.monitor.IMogoMonitorProvider; import com.mogo.service.network.IMogoNetwork; import com.mogo.service.obu.IMogoObuManager; import com.mogo.service.passport.IMogoPassportManager; @@ -206,7 +207,12 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance( IMogoAuthManager.class, MogoServicePaths.PATH_AGREEMENT ); } - private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) { + @Override + public IMogoMonitorProvider getMogoMonitorApi() { + return getApiInstance(IMogoMonitorProvider.class,MogoServicePaths.PATH_MOGO_MONITOR); + } + + private static < T extends IProvider > T getApiInstance(Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) { synchronized ( sLock ) {