3.31

安卓应用的性能监控与 Crash 捕获
实时监控应用性能并捕获 Crash 信息,有助于及时发现和修复应用中的问题。​

  1. 性能监控​
    使用 Android 的 StrictMode 检测代码中的违规操作,例如主线程中的磁盘或网络操作:​

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()​
    .detectDiskReads()​
    .detectDiskWrites()​
    .detectNetwork()​
    .penaltyLog()​
    .build());​
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()​
    .detectLeakedSqlLiteObjects()​
    .penaltyLog()​
    .penaltyDeath()​
    .build());​

    使用 TraceView 进行方法调用性能分析:​

    Debug.startMethodTracing("my_trace");​
    // 执行需要分析的代码​
    Debug.stopMethodTracing();​
  2. Crash 捕获​
    自定义 UncaughtExceptionHandler 捕获未处理的异常:​

    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {​
    @Override​
    public void uncaughtException(Thread t, Throwable e) {​
    // 保存Crash日志到文件​
    File file = new File(Environment.getExternalStorageDirectory(), "crash.log");​
    try (FileWriter writer = new FileWriter(file, true)) {​
    e.printStackTrace(new PrintWriter(writer));​
    } catch (IOException ex) {​
    ex.printStackTrace();​
    }​
    // 重启应用或提示用户​
    Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());​
    PendingIntent pendingIntent = PendingIntent.getActivity(​
    MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);​
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);​
    alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, pendingIntent);​
    System.exit(2);​
    }​
    });​
posted @ 2025-03-31 21:13  Echosssss  阅读(8)  评论(0)    收藏  举报