3.31
安卓应用的性能监控与 Crash 捕获
实时监控应用性能并捕获 Crash 信息,有助于及时发现和修复应用中的问题。
- 性能监控
使用 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();
- 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);
}
});
浙公网安备 33010602011771号