From 4f35562d451b87666794e597bce701f58c8f1c2b Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sat, 29 Jul 2017 18:27:15 +0800 Subject: [PATCH] fix: ConsoleView ConcurrentModifiationException --- app/build.gradle | 4 ++-- .../autojs/runtime/console/ConsoleView.java | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c5e6e837..3ae481c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "com.stardust.scriptdroid" minSdkVersion 17 targetSdkVersion 23 - versionCode 155 - versionName "2.0.15 Alpha3" + versionCode 156 + versionName "2.0.15 Alpha4" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true ndk { diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java b/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java index f11c38c4..52b7953d 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/console/ConsoleView.java @@ -23,6 +23,9 @@ import com.stardust.autojs.runtime.console.StardustConsole; import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow; import com.stardust.util.SparseArrayEntries; +import java.util.ArrayList; +import java.util.List; + /** * Created by Stardust on 2017/5/2. */ @@ -155,9 +158,19 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe private void refreshLog() { if (mConsole != null) { mTextView.setText(""); - for (StardustConsole.Log log : mConsole.getLogs()) { - onNewLog(log); - } + final List logs = new ArrayList<>(mConsole.getLogs()); + post(new Runnable() { + @Override + public void run() { + for (StardustConsole.Log log : logs) { + int color = getColorForLevel(log.level); + final Spannable spannable = buildColorSpannable(log.content, color); + mTextView.append(spannable); + } + mContentContainer.fullScroll(View.FOCUS_DOWN); + mEditText.requestFocus(); + } + }); } }