5.15
一、集成 Firebase Performance Monitoring
在 Android 项目中配置性能监控:
groovy
// build.gradle
implementation 'com.google.firebase:firebase-performance:20.0.3'
监控关键代码路径:
java
public class MainActivity extends AppCompatActivity {
private Trace networkTrace;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 开始追踪网络请求
networkTrace = FirebasePerformance.getInstance().newTrace("load_data");
networkTrace.start();
// 模拟网络请求
loadDataFromNetwork();
}
private void loadDataFromNetwork() {
// 网络请求代码...
// 结束追踪
networkTrace.stop();
// 记录自定义指标
networkTrace.putMetric("items_loaded", 10);
}
}
二、内存泄漏检测(LeakCanary)
添加 LeakCanary 依赖:
groovy
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'
三、ANR 监控
自定义 ANR 检测器:
java
public class ANRDetector {
private static final long ANR_TIMEOUT = 5000; // 5秒超时
public static void start() {
final Handler mainHandler = new Handler(Looper.getMainLooper());
final AtomicBoolean tick = new AtomicBoolean(false);
new Thread(() -> {
while (true) {
final long startTime = System.currentTimeMillis();
mainHandler.post(() -> tick.set(true));
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!tick.get()) {
long duration = System.currentTimeMillis() - startTime;
if (duration > ANR_TIMEOUT) {
// 检测到ANR,记录堆栈信息
StringBuilder sb = new StringBuilder();
for (Thread thread : Thread.getAllStackTraces().keySet()) {
if (thread.getId() == Looper.getMainLooper().getThread().getId()) {
sb.append("Main Thread Stack:\n");
for (StackTraceElement element : thread.getStackTrace()) {
sb.append(element.toString()).append("\n");
}
break;
}
}
Log.e("ANR", "App Not Responding for " + duration + "ms\n" + sb.toString());
// 可以上传到服务器或保存到本地
}
} else {
tick.set(false);
}
}
}).start();
}
}
在 Application 中初始化:
java
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 启动ANR检测器
ANRDetector.start();
}
}
四、性能优化案例
冷启动优化:
延迟非必要组件初始化
使用异步加载技术
内存优化:
避免静态变量持有 Activity 引用
及时释放资源
网络优化:
合并网络请求
使用缓存减少重复请求
通过这些性能监控工具和优化措施,可以大幅提升 Android 应用的稳定性和用户体验。

浙公网安备 33010602011771号