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 应用的稳定性和用户体验。

posted @ 2025-05-15 21:51  李蕊lr  阅读(10)  评论(0)    收藏  举报