ADD week 5
This commit is contained in:
		
							
								
								
									
										128
									
								
								02-Easy5/E5/sources/androidx/tracing/Trace.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								02-Easy5/E5/sources/androidx/tracing/Trace.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | ||||
| package androidx.tracing; | ||||
|  | ||||
| import android.util.Log; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.lang.reflect.Method; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public final class Trace { | ||||
|     static final String TAG = "Trace"; | ||||
|     private static Method sAsyncTraceBeginMethod; | ||||
|     private static Method sAsyncTraceEndMethod; | ||||
|     private static Method sIsTagEnabledMethod; | ||||
|     private static Method sTraceCounterMethod; | ||||
|     private static long sTraceTagApp; | ||||
|  | ||||
|     public static boolean isEnabled() { | ||||
|         boolean isEnabled; | ||||
|         try { | ||||
|             if (sIsTagEnabledMethod == null) { | ||||
|                 isEnabled = android.os.Trace.isEnabled(); | ||||
|                 return isEnabled; | ||||
|             } | ||||
|         } catch (NoClassDefFoundError | NoSuchMethodError unused) { | ||||
|         } | ||||
|         return isEnabledFallback(); | ||||
|     } | ||||
|  | ||||
|     public static void beginSection(String str) { | ||||
|         TraceApi18Impl.beginSection(str); | ||||
|     } | ||||
|  | ||||
|     public static void endSection() { | ||||
|         TraceApi18Impl.endSection(); | ||||
|     } | ||||
|  | ||||
|     public static void beginAsyncSection(String str, int i) { | ||||
|         try { | ||||
|             if (sAsyncTraceBeginMethod == null) { | ||||
|                 TraceApi29Impl.beginAsyncSection(str, i); | ||||
|                 return; | ||||
|             } | ||||
|         } catch (NoClassDefFoundError | NoSuchMethodError unused) { | ||||
|         } | ||||
|         beginAsyncSectionFallback(str, i); | ||||
|     } | ||||
|  | ||||
|     public static void endAsyncSection(String str, int i) { | ||||
|         try { | ||||
|             if (sAsyncTraceEndMethod == null) { | ||||
|                 TraceApi29Impl.endAsyncSection(str, i); | ||||
|                 return; | ||||
|             } | ||||
|         } catch (NoClassDefFoundError | NoSuchMethodError unused) { | ||||
|         } | ||||
|         endAsyncSectionFallback(str, i); | ||||
|     } | ||||
|  | ||||
|     public static void setCounter(String str, int i) { | ||||
|         try { | ||||
|             if (sTraceCounterMethod == null) { | ||||
|                 TraceApi29Impl.setCounter(str, i); | ||||
|                 return; | ||||
|             } | ||||
|         } catch (NoClassDefFoundError | NoSuchMethodError unused) { | ||||
|         } | ||||
|         setCounterFallback(str, i); | ||||
|     } | ||||
|  | ||||
|     private static boolean isEnabledFallback() { | ||||
|         try { | ||||
|             if (sIsTagEnabledMethod == null) { | ||||
|                 sTraceTagApp = android.os.Trace.class.getField("TRACE_TAG_APP").getLong(null); | ||||
|                 sIsTagEnabledMethod = android.os.Trace.class.getMethod("isTagEnabled", Long.TYPE); | ||||
|             } | ||||
|             return ((Boolean) sIsTagEnabledMethod.invoke(null, Long.valueOf(sTraceTagApp))).booleanValue(); | ||||
|         } catch (Exception e) { | ||||
|             handleException("isTagEnabled", e); | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void beginAsyncSectionFallback(String str, int i) { | ||||
|         try { | ||||
|             if (sAsyncTraceBeginMethod == null) { | ||||
|                 sAsyncTraceBeginMethod = android.os.Trace.class.getMethod("asyncTraceBegin", Long.TYPE, String.class, Integer.TYPE); | ||||
|             } | ||||
|             sAsyncTraceBeginMethod.invoke(null, Long.valueOf(sTraceTagApp), str, Integer.valueOf(i)); | ||||
|         } catch (Exception e) { | ||||
|             handleException("asyncTraceBegin", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void endAsyncSectionFallback(String str, int i) { | ||||
|         try { | ||||
|             if (sAsyncTraceEndMethod == null) { | ||||
|                 sAsyncTraceEndMethod = android.os.Trace.class.getMethod("asyncTraceEnd", Long.TYPE, String.class, Integer.TYPE); | ||||
|             } | ||||
|             sAsyncTraceEndMethod.invoke(null, Long.valueOf(sTraceTagApp), str, Integer.valueOf(i)); | ||||
|         } catch (Exception e) { | ||||
|             handleException("asyncTraceEnd", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void setCounterFallback(String str, int i) { | ||||
|         try { | ||||
|             if (sTraceCounterMethod == null) { | ||||
|                 sTraceCounterMethod = android.os.Trace.class.getMethod("traceCounter", Long.TYPE, String.class, Integer.TYPE); | ||||
|             } | ||||
|             sTraceCounterMethod.invoke(null, Long.valueOf(sTraceTagApp), str, Integer.valueOf(i)); | ||||
|         } catch (Exception e) { | ||||
|             handleException("traceCounter", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void handleException(String str, Exception exc) { | ||||
|         if (exc instanceof InvocationTargetException) { | ||||
|             Throwable cause = exc.getCause(); | ||||
|             if (cause instanceof RuntimeException) { | ||||
|                 throw ((RuntimeException) cause); | ||||
|             } | ||||
|             throw new RuntimeException(cause); | ||||
|         } | ||||
|         Log.v(TAG, "Unable to call " + str + " via reflection", exc); | ||||
|     } | ||||
|  | ||||
|     private Trace() { | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user