فهرست منبع

code move / anr reporting

Milan Jurkulak 3 سال پیش
والد
کامیت
8c3d5c3a81

+ 0 - 42
app/src/main/kotlin/org/mjdev/tvapp/activity/MainActivity.kt

@@ -8,10 +8,8 @@
 
 package org.mjdev.tvapp.activity
 
-import android.os.Bundle
 import androidx.compose.runtime.Composable
 import dagger.hilt.android.AndroidEntryPoint
-import org.mjdev.tvapp.BuildConfig
 import org.mjdev.tvlib.activity.ComposableActivity
 import org.mjdev.tvlib.annotations.TvPreview
 import org.mjdev.tvlib.extensions.NavGraphBuilderExt.screen
@@ -20,50 +18,10 @@ import org.mjdev.tvapp.ui.screens.DetailScreen
 import org.mjdev.tvapp.ui.screens.MainScreen
 import org.mjdev.tvapp.ui.screens.PlayerScreen
 import org.mjdev.tvapp.ui.screens.SplashScreen
-import org.mjdev.tvlib.helpers.anr.agent.ANRSpyAgent
-import org.mjdev.tvlib.helpers.anr.agent.ANRSpyListener
-import org.mjdev.tvlib.helpers.anr.models.MethodModel
-import timber.log.Timber
 
 @AndroidEntryPoint
 class MainActivity : ComposableActivity() {
 
-    private var anrCallback = object : ANRSpyListener {
-        override fun onWait(ms: Long) {
-        }
-
-        @Deprecated("This callback will be removed in future")
-        override fun onAnrStackTrace(stackstrace: Array<StackTraceElement>) {
-        }
-
-        override fun onReportAvailable(methodList: List<MethodModel>) {
-        }
-
-        override fun onAnrDetected(
-            details: String,
-            stackTrace: Array<StackTraceElement>,
-            packageMethods: List<String>?
-        ) {
-            Timber.e(details)
-            Timber.e(stackTrace.toString())
-            Timber.e(packageMethods.toString())
-        }
-    }
-
-    private val anrSpyAgent = ANRSpyAgent.Builder(this)
-        .setTimeOut(500)
-        .setSpyListener(anrCallback)
-        .setThrowException(false)
-        .enableReportAnnotatedMethods(true)
-        .build()
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        if (BuildConfig.DEBUG) {
-            anrSpyAgent.start()
-        }
-    }
-
     @TvPreview
     @Composable
     override fun Compose() = super.Compose()

+ 40 - 0
tvlib/src/main/kotlin/org/mjdev/tvlib/activity/ComposableActivity.kt

@@ -28,10 +28,14 @@ import androidx.tv.material3.ExperimentalTvMaterial3Api
 import androidx.tv.material3.MaterialTheme
 import androidx.tv.material3.NonInteractiveSurfaceDefaults
 import androidx.tv.material3.Surface
+import org.mjdev.tvlib.BuildConfig
 import org.mjdev.tvlib.annotations.TvPreview
 import org.mjdev.tvlib.extensions.ContextExt.isATv
 import org.mjdev.tvlib.extensions.NavExt.rememberNavControllerEx
 import org.mjdev.tvlib.extensions.NavGraphBuilderExt.screen
+import org.mjdev.tvlib.helpers.anr.agent.ANRSpyAgent
+import org.mjdev.tvlib.helpers.anr.agent.ANRSpyListener
+import org.mjdev.tvlib.helpers.anr.models.MethodModel
 import org.mjdev.tvlib.navigation.NavGraphBuilderEx
 import org.mjdev.tvlib.ui.components.navigation.NavHostEx
 import org.mjdev.tvlib.ui.components.screen.EmptyScreen
@@ -47,10 +51,43 @@ open class ComposableActivity : ComponentActivity() {
         screen(route = EmptyScreen())
     }
 
+    private var anrCallback = object : ANRSpyListener {
+        override fun onWait(ms: Long) {
+        }
+
+        @Deprecated("This callback will be removed in future")
+        override fun onAnrStackTrace(stackstrace: Array<StackTraceElement>) {
+        }
+
+        override fun onReportAvailable(methodList: List<MethodModel>) {
+        }
+
+        override fun onAnrDetected(
+            details: String,
+            stackTrace: Array<StackTraceElement>,
+            packageMethods: List<String>?
+        ) {
+            Timber.e(details)
+            Timber.e(stackTrace.toString())
+            Timber.e(packageMethods.toString())
+        }
+    }
+
+    private val anrSpyAgent = ANRSpyAgent.Builder(this)
+        .setTimeOut(500)
+        .setSpyListener(anrCallback)
+        .setThrowException(false)
+        .enableReportAnnotatedMethods(true)
+        .build()
+
     open val backgroundColor = Color(0xff202020)
     open val roundCornerSize: Dp = 0.dp
     open val backgroundShape: Shape = RoundedCornerShape(roundCornerSize)
 
+    fun reportANR() {
+        anrSpyAgent.start()
+    }
+
     @TvPreview
     @OptIn(ExperimentalTvMaterial3Api::class)
     @Composable
@@ -81,6 +118,9 @@ open class ComposableActivity : ComponentActivity() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        if (BuildConfig.DEBUG) {
+            reportANR()
+        }
         WindowCompat.setDecorFitsSystemWindows(window, !isATv)
         setContent {
             Compose()