From 0473dfbf60fa8632a352986deb0bae74714e4f39 Mon Sep 17 00:00:00 2001
From: hyb1996 <946994919@qq.com>
Date: Mon, 4 Dec 2017 23:28:29 +0800
Subject: [PATCH] fix: app ANR when crash
---
app/release/output.json | 2 +-
.../main/assets/sample/复杂界面/登录界面.js | 2 +-
.../java/com/stardust/scriptdroid/App.java | 7 ++--
.../scriptdroid/tool/CrashHandler.java | 9 ++++-
.../autojs/runtime/ScriptRuntime.java | 33 +++++++++++--------
5 files changed, 34 insertions(+), 19 deletions(-)
diff --git a/app/release/output.json b/app/release/output.json
index 788e9f63..3126ad05 100644
--- a/app/release/output.json
+++ b/app/release/output.json
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1},"path":"inrt-release.apk","properties":{"packageId":"com.stardust.auojs.inrt","split":"","minSdkVersion":"17"}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":231},"path":"release-3.0.0 Alpha31.apk","properties":{"packageId":"com.stardust.scriptdroid","split":"","minSdkVersion":"17"}}]
\ No newline at end of file
diff --git a/app/src/main/assets/sample/复杂界面/登录界面.js b/app/src/main/assets/sample/复杂界面/登录界面.js
index 29bf4c86..60afa9ca 100644
--- a/app/src/main/assets/sample/复杂界面/登录界面.js
+++ b/app/src/main/assets/sample/复杂界面/登录界面.js
@@ -14,7 +14,7 @@ function showLoginUI(){
密码
-
+
diff --git a/app/src/main/java/com/stardust/scriptdroid/App.java b/app/src/main/java/com/stardust/scriptdroid/App.java
index 218446a2..c0dc1608 100644
--- a/app/src/main/java/com/stardust/scriptdroid/App.java
+++ b/app/src/main/java/com/stardust/scriptdroid/App.java
@@ -4,6 +4,7 @@ import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.multidex.MultiDexApplication;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
@@ -57,6 +58,8 @@ public class App extends MultiDexApplication {
}
private void setUpStaticsTool() {
+ if (BuildConfig.DEBUG)
+ return;
new FlurryAgent.Builder()
.withLogEnabled(BuildConfig.DEBUG)
.build(this, "D42MH48ZN4PJC5TKNYZD");
@@ -68,8 +71,8 @@ public class App extends MultiDexApplication {
return;
}
LeakCanary.install(this);
- if (!BuildConfig.DEBUG)
- Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(ErrorReportActivity.class));
+ //if (!BuildConfig.DEBUG)
+ Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(ErrorReportActivity.class));
}
private void init() {
diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java b/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java
index 052a15d0..637e24c5 100644
--- a/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java
+++ b/app/src/main/java/com/stardust/scriptdroid/tool/CrashHandler.java
@@ -6,14 +6,15 @@ package com.stardust.scriptdroid.tool;
import android.content.Intent;
+import android.os.Build;
import android.util.Log;
import android.view.WindowManager;
import android.widget.Toast;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.R;
-import com.stardust.scriptdroid.accessibility.AccessibilityService;
import com.stardust.util.IntentUtil;
+import com.stardust.view.accessibility.AccessibilityService;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -37,13 +38,19 @@ public class CrashHandler implements UncaughtExceptionHandler {
}
try {
Log.e(TAG, "Uncaught Exception", ex);
+ AccessibilityService service = AccessibilityService.getInstance();
+ if (service != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ service.disableSelf();
+ }
if (crashTooManyTimes())
return;
String msg = App.getApp().getString(R.string.sorry_for_crash) + ex.toString();
startErrorReportActivity(msg, throwableToString(ex));
+ System.exit(0);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
+
}
private static boolean causedByBadWindowToken(Throwable e) {
diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java
index 5a90396d..134cf35b 100644
--- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java
+++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java
@@ -313,20 +313,25 @@ public class ScriptRuntime {
}
public void onExit() {
- threads.shutDownAll();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- images.releaseScreenCapturer();
- }
- if (mRootShell != null) {
- mRootShell.exitAndWaitFor();
- }
- mRootShell = null;
- mShellSupplier = null;
- if (events != null) {
- events.recycle();
- }
- if (loopers != null) {
- loopers.quitAll();
+ try {
+ threads.shutDownAll();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ images.releaseScreenCapturer();
+ }
+
+ if (events != null) {
+ events.recycle();
+ }
+ if (loopers != null) {
+ loopers.quitAll();
+ }
+ if (mRootShell != null) {
+ mRootShell.exitAndWaitFor();
+ }
+ mRootShell = null;
+ mShellSupplier = null;
+ } catch (Exception e) {
+ e.printStackTrace();
}
}