6.7.0 - Alpha21 - 修复代码编辑器置于后台时可能导致 TransactionTooLargeException 异常的问题
This commit is contained in:
@@ -72,7 +72,7 @@ import org.autojs.autojs.ui.edit.completion.CodeCompletionBar.OnHintClickListene
|
||||
import org.autojs.autojs.ui.edit.debug.DebugBar
|
||||
import org.autojs.autojs.ui.edit.editor.CodeEditor
|
||||
import org.autojs.autojs.ui.edit.editor.CodeEditor.CheckedPatternSyntaxException
|
||||
import org.autojs.autojs.ui.edit.editor.JavaScriptHighlighter.MAX_HIGHLIGHT_CHARS
|
||||
import org.autojs.autojs.ui.edit.editor.JavaScriptHighlighter
|
||||
import org.autojs.autojs.ui.edit.editor.LayoutHelper
|
||||
import org.autojs.autojs.ui.edit.keyboard.FunctionsKeyboardHelper
|
||||
import org.autojs.autojs.ui.edit.keyboard.FunctionsKeyboardView
|
||||
@@ -420,6 +420,10 @@ class EditorView : LinearLayout, OnHintClickListener, ClickCallback, ToolbarFrag
|
||||
findViewById<View>(R.id.redo).visibility = GONE
|
||||
findViewById<View>(R.id.save).visibility = GONE
|
||||
}
|
||||
if (mLargeFileMode) {
|
||||
findViewById<View>(R.id.undo).visibility = GONE
|
||||
findViewById<View>(R.id.redo).visibility = GONE
|
||||
}
|
||||
if (!intent.getBooleanExtra(EXTRA_RUN_ENABLED, true)) {
|
||||
findViewById<View>(R.id.run).visibility = GONE
|
||||
}
|
||||
@@ -698,7 +702,7 @@ class EditorView : LinearLayout, OnHintClickListener, ClickCallback, ToolbarFrag
|
||||
}
|
||||
|
||||
private fun loadUri(uri: Uri): Observable<String> {
|
||||
val streamThresholdBytes = MAX_HIGHLIGHT_CHARS
|
||||
val streamThresholdBytes = LARGE_FILE_MODE_THRESHOLD
|
||||
|
||||
val sizeOrNull = runCatching { queryContentLengthOrNull(uri) }.getOrNull()
|
||||
if (sizeOrNull != null && sizeOrNull >= streamThresholdBytes) {
|
||||
@@ -1143,7 +1147,7 @@ class EditorView : LinearLayout, OnHintClickListener, ClickCallback, ToolbarFrag
|
||||
return
|
||||
}
|
||||
|
||||
val progressiveThreshold = MAX_HIGHLIGHT_CHARS
|
||||
val progressiveThreshold = LARGE_FILE_MODE_THRESHOLD
|
||||
if (text.length > progressiveThreshold) {
|
||||
mLargeFileMode = true
|
||||
setInitialTextProgressively(text)
|
||||
@@ -1175,7 +1179,7 @@ class EditorView : LinearLayout, OnHintClickListener, ClickCallback, ToolbarFrag
|
||||
|
||||
// Re-highlight once after fast load, but only when size is within highlighter limit.
|
||||
// zh-CN: 快速加载完成后主动触发一次高亮, 但仅在文本大小不超过高亮上限时执行.
|
||||
if (text.length <= MAX_HIGHLIGHT_CHARS) {
|
||||
if (text.length <= JavaScriptHighlighter.MAX_HIGHLIGHT_CHARS) {
|
||||
post { editor.refreshHighlightTokensIfAllowed() }
|
||||
}
|
||||
}
|
||||
@@ -2679,6 +2683,8 @@ class EditorView : LinearLayout, OnHintClickListener, ClickCallback, ToolbarFrag
|
||||
private const val MIN_CONFIDENCE_TO_WRITE_FILE = 90
|
||||
private val DEFAULT_CHARSET_TO_WRITE_FILE = StandardCharsets.UTF_8
|
||||
|
||||
private const val LARGE_FILE_MODE_THRESHOLD = JavaScriptHighlighter.MAX_HIGHLIGHT_CHARS
|
||||
|
||||
// Internal storage root (no external SD).
|
||||
// zh-CN: 内部存储根目录 (不访问外置 SD).
|
||||
private const val INTERNAL_STORAGE_ROOT: String = "/storage/emulated/0"
|
||||
|
||||
@@ -137,6 +137,15 @@ class CodeEditText : AppCompatEditText {
|
||||
}
|
||||
mCursorChangeCallbacks = CopyOnWriteArrayList()
|
||||
|
||||
// Prevent Android framework from saving/restoring huge editor text via View state.
|
||||
// Otherwise minimizing the Activity may trigger TransactionTooLargeException for large files.
|
||||
//
|
||||
// zh-CN:
|
||||
// 禁止系统通过 View state 自动保存/恢复超大的编辑器文本.
|
||||
// 否则在最小化 Activity 时, 大文件很容易触发 TransactionTooLargeException.
|
||||
isSaveEnabled = false
|
||||
freezesText = false
|
||||
|
||||
// Ensure selection is possible by default.
|
||||
// zh-CN: 默认确保可以进行文本选择.
|
||||
setTextIsSelectable(true)
|
||||
@@ -590,9 +599,9 @@ class CodeEditText : AppCompatEditText {
|
||||
|
||||
// Also drop selection-changed events entirely in large-text mode.
|
||||
// zh-CN: 大文本模式下直接丢弃 selection-changed 事件.
|
||||
if (event.eventType == AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED) {
|
||||
return
|
||||
}
|
||||
if (event.eventType == AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED) return
|
||||
if (event.eventType == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) return
|
||||
if (event.eventType == AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY) return
|
||||
}
|
||||
super.sendAccessibilityEventUnchecked(event)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#Wed Feb 25 03:02:22 CST 2026
|
||||
BUILD_TIME=1771959742388
|
||||
#Wed Feb 25 16:44:22 CST 2026
|
||||
BUILD_TIME=1772009062191
|
||||
COMPILE_SDK_VERSION=36
|
||||
IMAGE_QUANT_CMAKE_VERSION=3.22.1
|
||||
IMAGE_QUANT_NDK_VERSION=26.1.10909125
|
||||
@@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
|
||||
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
|
||||
TARGET_SDK_VERSION=36
|
||||
TARGET_SDK_VERSION_INRT=29
|
||||
VERSION_BUILD=3752
|
||||
VERSION_BUILD=3753
|
||||
VERSION_NAME=6.7.0 Alpha21
|
||||
VSCODE_EXT_REQUIRED_VERSION=1.0.13
|
||||
|
||||
Reference in New Issue
Block a user