k.java 源代码


package com.apm.insight.b;

import android.os.Build;
import android.os.Looper;
import android.os.Message;
import android.os.MessageQueue;
import java.lang.reflect.Field;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class k {

    private static MessageQueue f6388a;

    private static Field f6389b;

    private static Field f6390c;

    protected static Message a(Message message) {
        Field field = f6390c;
        if (field != null) {
            try {
                return (Message) field.get(message);
            } catch (Exception unused) {
                return null;
            }
        }
        try {
            Field declaredField = Class.forName("android.os.Message").getDeclaredField("next");
            f6390c = declaredField;
            declaredField.setAccessible(true);
            return (Message) f6390c.get(message);
        } catch (Exception unused2) {
            return null;
        }
    }

    public static Message a(MessageQueue messageQueue) {
        Field field = f6389b;
        if (field != null) {
            try {
                return (Message) field.get(messageQueue);
            } catch (Exception unused) {
                return null;
            }
        }
        try {
            Field declaredField = Class.forName("android.os.MessageQueue").getDeclaredField("mMessages");
            f6389b = declaredField;
            declaredField.setAccessible(true);
            return (Message) f6389b.get(messageQueue);
        } catch (Exception unused2) {
            return null;
        }
    }

    public static MessageQueue a() {
        MessageQueue queue;
        if (f6388a == null && Looper.getMainLooper() != null) {
            Looper mainLooper = Looper.getMainLooper();
            if (mainLooper == Looper.myLooper()) {
                queue = Looper.myQueue();
            } else if (Build.VERSION.SDK_INT >= 23) {
                queue = mainLooper.getQueue();
            } else {
                try {
                    Field declaredField = mainLooper.getClass().getDeclaredField("mQueue");
                    declaredField.setAccessible(true);
                    f6388a = (MessageQueue) declaredField.get(mainLooper);
                } catch (Throwable th) {
                    th.printStackTrace();
                }
            }
            f6388a = queue;
        }
        return f6388a;
    }

    public static JSONArray a(int i6, long j6) {
        MessageQueue a7 = a();
        JSONArray jSONArray = new JSONArray();
        if (a7 == null) {
            return jSONArray;
        }
        try {
            synchronized (a7) {
                Message a8 = a(a7);
                if (a8 == null) {
                    return jSONArray;
                }
                int i7 = 0;
                int i8 = 0;
                while (a8 != null && i7 < i6) {
                    i7++;
                    i8++;
                    JSONObject a9 = a(a8, j6);
                    try {
                        a9.put("id", i8);
                    } catch (JSONException unused) {
                    }
                    jSONArray.put(a9);
                    a8 = a(a8);
                }
                return jSONArray;
            }
        } catch (Throwable th) {
            com.apm.insight.b.a().a("NPTH_CATCH", th);
            return jSONArray;
        }
    }

    private static JSONObject a(Message message, long j6) {
        JSONObject jSONObject = new JSONObject();
        if (message == null) {
            return jSONObject;
        }
        try {
            jSONObject.put("when", message.getWhen() - j6);
            if (message.getCallback() != null) {
                jSONObject.put("callback", String.valueOf(message.getCallback()));
            }
            jSONObject.put("what", message.what);
            if (message.getTarget() != null) {
                jSONObject.put("target", String.valueOf(message.getTarget()));
            } else {
                jSONObject.put("barrier", message.arg1);
            }
            jSONObject.put("arg1", message.arg1);
            jSONObject.put("arg2", message.arg2);
            Object obj = message.obj;
            if (obj != null) {
                jSONObject.put("obj", obj);
            }
        } catch (JSONException e6) {
            e6.printStackTrace();
        }
        return jSONObject;
    }
}