Skip to content

OnClickListener2048/LayoutInflateDetector

Repository files navigation

使用方法: // MyApplication.java import android.app.Application; import android.util.Log;

import java.util.List;

public class MyApplication extends Application {

private static final String TAG = "MyApplication";

@Override
public void onCreate() {
    super.onCreate();

    // 安装布局膨胀拦截器
    LayoutInflateInterceptor.install(this);

    // 注册Activity生命周期回调,可以在Activity销毁时打印或清除数据
    // 或者在特定按钮点击时触发检测报告
    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
        @Override
        public void onActivityStarted(android.app.Activity activity) { }
        @Override
        public void onActivityResumed(android.app.Activity activity) {
            // Activity 每次 resume 时可以打印当前已检测到的布局
            Log.d(TAG, "--- Detected Delayed Loadable Layouts for " + activity.getClass().getSimpleName() + " ---");
            List<DelayedLoadableLayoutInfo> detected = LayoutDetector.getDetectedLayouts();
            if (detected.isEmpty()) {
                Log.d(TAG, "No delayed loadable layouts detected yet.");
            } else {
                for (DelayedLoadableLayoutInfo info : detected) {
                    Log.d(TAG, info.toString());
                }
            }
            // 如果每次Activity显示都清空,则只看当前Activity的加载情况
            // LayoutDetector.clearDetectedLayouts();
        }
        @Override
        public void onActivityPaused(android.app.Activity activity) { }
        @Override
        public void onActivityStopped(android.app.Activity activity) { }
        @Override
        public void onActivitySaveInstanceState(android.app.Activity activity, android.os.Bundle outState) { }
        @Override
        public void onActivityDestroyed(android.app.Activity activity) {
            // Activity 销毁时,可以考虑清除相关检测数据,或者保存到报告中
            // 比如在一个调试工具中,你可以收集所有Activity的检测数据
        }
        @Override
        public void onActivityCreated(android.app.Activity activity, android.os.Bundle savedInstanceState) {
            // 注意:在 Activity.onCreate() 中设置 Factory 是比较晚的,因为 Activity 自身的布局可能已经膨胀。
            // 最好的地方是在 Application.onCreate() 中设置,或者在 Activity.attachBaseContext() 中设置。
            // 这里我们已经在 Application 中设置了,所以 Activity 自身的 inflate 也会被拦截。
        }
    });
}

}

About

帮助你检测布局中是否有可以使用ViewStub延迟初始化布局的工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published