|
@@ -0,0 +1,69 @@
|
|
|
+package xn.huaxue.update;
|
|
|
+
|
|
|
+import android.app.Application;
|
|
|
+import android.widget.Toast;
|
|
|
+
|
|
|
+import com.blankj.utilcode.util.ActivityUtils;
|
|
|
+import com.blankj.utilcode.util.AppUtils;
|
|
|
+import com.blankj.utilcode.util.CrashUtils;
|
|
|
+import com.blankj.utilcode.util.FileUtils;
|
|
|
+import com.blankj.utilcode.util.LogUtils;
|
|
|
+import com.blankj.utilcode.util.SPUtils;
|
|
|
+import com.blankj.utilcode.util.ThreadUtils;
|
|
|
+import com.github.anrwatchdog.ANRError;
|
|
|
+import com.github.anrwatchdog.ANRWatchDog;
|
|
|
+
|
|
|
+public class App extends Application {
|
|
|
+ @Override
|
|
|
+ public void onCreate() {
|
|
|
+ super.onCreate();
|
|
|
+ new ANRWatchDog(5000).setANRListener(new ANRWatchDog.ANRListener() {
|
|
|
+ @Override
|
|
|
+ public void onAppNotResponding(ANRError error) {
|
|
|
+ ThreadUtils.runOnUiThread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ Toast.makeText(ActivityUtils.getTopActivity(), "检测到应用卡顿,重启应用恢复!", Toast.LENGTH_LONG).show();
|
|
|
+ int anrSize = SPUtils.getInstance().getInt("ANR_size", 0);
|
|
|
+ if (anrSize > 5) {
|
|
|
+ SPUtils.getInstance().put("ANR_size", 0);
|
|
|
+ Tool.INSTANCE.reboot();
|
|
|
+ } else {
|
|
|
+ SPUtils.getInstance().put("ANR_size", ++anrSize);
|
|
|
+ Tool.INSTANCE.reStartApp();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ LogUtils.e(error.getMessage(), error);
|
|
|
+ }
|
|
|
+ }).start();
|
|
|
+
|
|
|
+ String logPath = "/sdcard/logs/";
|
|
|
+ String crashPath = "/sdcard/logs/crash/";
|
|
|
+ // log文件存储地址
|
|
|
+ FileUtils.createOrExistsDir(logPath);
|
|
|
+ FileUtils.createOrExistsDir(crashPath);
|
|
|
+ CrashUtils.init(crashPath, crashInfo -> {
|
|
|
+ LogUtils.e(crashInfo);
|
|
|
+ Tool.INSTANCE.reStartApp();
|
|
|
+ });
|
|
|
+ LogUtils.Config config = LogUtils.getConfig();
|
|
|
+ // log开关控制
|
|
|
+ config.setLogSwitch(true);
|
|
|
+ // log控制台开关
|
|
|
+ config.setConsoleSwitch(true);
|
|
|
+ // logTag
|
|
|
+ config.setGlobalTag("Jayce");
|
|
|
+ // log头部信息开关
|
|
|
+ config.setLogHeadSwitch(true);
|
|
|
+ // log文件开关
|
|
|
+ config.setLog2FileSwitch(true);
|
|
|
+ config.setDir(logPath);
|
|
|
+ // log文件前缀
|
|
|
+ config.setFilePrefix(AppUtils.getAppName());
|
|
|
+ // log边框开关
|
|
|
+ config.setBorderSwitch(true);
|
|
|
+ // log文件保存天数
|
|
|
+ config.setSaveDays(30);
|
|
|
+ }
|
|
|
+}
|