修复 脚本文件过大时崩溃的问题

This commit is contained in:
hyb1996
2018-11-20 20:49:30 +08:00
parent ed58797eaa
commit 237dbe0f50
5 changed files with 46 additions and 17 deletions

View File

@@ -78,33 +78,33 @@ public class ApkBuilder {
}
public AppConfig setAppName(String appName) {
appName = appName;
this.appName = appName;
return this;
}
public AppConfig setVersionName(String versionName) {
versionName = versionName;
this.versionName = versionName;
return this;
}
public AppConfig setVersionCode(int versionCode) {
versionCode = versionCode;
this.versionCode = versionCode;
return this;
}
public AppConfig setSourcePath(String sourcePath) {
sourcePath = sourcePath;
this.sourcePath = sourcePath;
return this;
}
public AppConfig setPackageName(String packageName) {
packageName = packageName;
this.packageName = packageName;
return this;
}
public AppConfig setIcon(Callable<Bitmap> icon) {
icon = icon;
this.icon = icon;
return this;
}

View File

@@ -13,7 +13,6 @@ import java.io.IOException;
public class TmpScriptFiles {
public static File create(Context context) throws IOException {
ensureTmpDir(context);
File tmp = new File(getTmpDir(context), "tmp-" + System.currentTimeMillis() + ".js");

View File

@@ -25,7 +25,6 @@ import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.service.autofill.AutofillService;
import android.support.annotation.RequiresApi;
import android.support.v7.widget.AppCompatEditText;
import android.text.Editable;
@@ -35,7 +34,8 @@ import android.util.Log;
import android.util.TimingLogger;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.autofill.AutofillManager;
import android.widget.TextView;
import android.widget.TextViewHelper;
import org.autojs.autojs.ui.edit.theme.Theme;
import org.autojs.autojs.ui.edit.theme.TokenMapping;
@@ -450,8 +450,13 @@ public class CodeEditText extends AppCompatEditText {
@Override
public Parcelable onSaveInstanceState() {
Bundle bundle = new Bundle();
Parcelable superData = super.onSaveInstanceState();
bundle.putParcelable("super_data", superData);
Editable text = getText();
TextView.SavedState savedState = (SavedState) super.onSaveInstanceState();
if (text != null && text.length() > 50 * 1024) {
// avoid TransactionTooLargeException
TextViewHelper.setText(savedState, "");
}
bundle.putParcelable("super_data", savedState);
bundle.putInt("debugging_line", mDebuggingLine);
int[] breakpoints = new int[mBreakpoints.size()];
int i = 0;

View File

@@ -21,15 +21,10 @@ import android.widget.FrameLayout;
import android.widget.ProgressBar;
import com.stardust.app.OnActivityResultDelegate;
import org.autojs.autojs.R;
import org.autojs.autojs.tool.ImageSelector;
import com.stardust.util.IntentUtil;
import org.androidannotations.annotations.OnActivityResult;
import org.androidannotations.annotations.ViewById;
import java.io.File;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;

View File

@@ -0,0 +1,30 @@
package android.widget;
import java.lang.reflect.Field;
public class TextViewHelper {
private static final Field sSavedStateText;
static {
Field text = null;
try {
text = TextView.SavedState.class.getDeclaredField("text");
text.setAccessible(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
sSavedStateText = text;
}
public static void setText(TextView.SavedState state, CharSequence text) {
if (sSavedStateText == null) {
return;
}
try {
sSavedStateText.set(state, text);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}