From a1c10b4406d8a5e2245a5bf9d74f3151da091bca Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 17 Aug 2022 11:36:56 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=BA=BF=E7=A8=8B=E4=BC=98=E5=8C=96]=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 23 +++++---- .../com/mogo/launcher/MogoApplication.java | 47 +++++++++++++++++++ build.gradle | 3 +- 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4ca4d03f22..cb8b2f1bab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,17 +28,20 @@ if (!isAndroidTestBuild()) { apply plugin: 'apm-plugin' } +if (!isAndroidTestBuild()) { + apply plugin: 'bytex.threadOpt' + thread_opt { + enable true + enableInDebug true + logLevel "DEBUG" + //白名单中的类不进行替换 + white_list = [ + 'leakcanary.*', + ] + } +} + //if (!isAndroidTestBuild()) { -// apply plugin: 'bytex.threadOpt' -// thread_opt { -// enable true -// enableInDebug true -// rxJavaIoReplacer 'com/mogo/eagle/core/utilcode/util/ThreadUtils@@getIoPool@@()Ljava/util/concurrent/ExecutorService;' -// rxJavaComputationReplacer 'com/mogo/eagle/core/utilcode/util/ThreadUtils@@getCpuPool@@()Ljava/util/concurrent/ExecutorService;' -// coroutineIoReplacer 'com/mogo/eagle/core/utilcode/util/ThreadUtils@@getIoPool@@()Ljava/util/concurrent/ExecutorService;' -// coroutineDefaultReplacer 'com/mogo/eagle/core/utilcode/util/ThreadUtils@@getCpuPool@@()Ljava/util/concurrent/ExecutorService;' -// } -// // /** // * 方便使用systrace工具,在工程侧打点,便于分析工程侧性能问题 // */ diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 8f87eca0de..b5953612b9 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -1,9 +1,21 @@ package com.mogo.launcher; import com.mogo.eagle.core.function.main.MainMoGoApplication; +import android.content.Context; +import android.util.Log; + +import androidx.annotation.NonNull; import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.launcher.crash.CrashSystem; +import com.mogo.thread.ext.core.ThreadManager; +import com.mogo.thread.ext.core.config.ThreadConfig; + +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** * @author congtaowang @@ -13,6 +25,41 @@ import com.mogo.launcher.crash.CrashSystem; */ public class MogoApplication extends MainMoGoApplication { + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + ThreadConfig.Builder builder = new ThreadConfig.Builder().listener(new ThreadConfig.TaskExecuteListener() { + @Override + public boolean isEnabled() { + return true; // 如果返回true,会有后续的回调;如果返回false, 不会有后续的回调 + } + + @Override + public void onExecutorBefore(@NonNull Runnable runnable) { + //每个任务执行前回调 + } + + @Override + public void onExecutorAfter(@NonNull Runnable runnable) { + //每个任务执行后回调 + } + + /** + * @param core 线程池的核心数 + * @param max 线程池的最大线程数 + * @param active 线程池正在活跃的任务数 + * @param completed 线程池已完成的任务数 + */ + @Override + public void onExecutorStateChanged(@NonNull ThreadPoolExecutor pool, int core, int max, int active, long completed) { + //线程池在执行过程,状态变化回调 + //Log.d("POOL", "core:" + core + ";max:" + max + ";active:" + active + ";completed:" + completed); + } + }); + builder.loggable(false); + ThreadManager.INSTANCE.init(builder); + } + @Override protected void initCrashConfig() { CrashSystem crashSystem = CrashSystem.getInstance(this); diff --git a/build.gradle b/build.gradle index 90cb140cd4..f18c4f8215 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,6 @@ apply from: "javadoc.gradle" buildscript { repositories { - maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } maven { url "https://artifact.bytedance.com/repository/byteX/" } maven { url 'http://nexus.zhidaoauto.com/repository/maven-releases/' } @@ -33,7 +32,7 @@ buildscript { classpath "com.bytedance.android.byteX:base-plugin:0.3.0" classpath "com.mogo.cloud:hook:${HOOK_LOG_VERSION}" classpath 'com.volcengine:apm_insight_plugin:1.4.1' - classpath 'com.mogo.cloud:thread_opt:1.0.1' + classpath 'com.mogo.cloud:thread_opt:5.0.5' classpath 'com.mogo.cloud:systrace:1.0.1' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'