Find Android-specific performance smells
Recipe ID
org.openrewrite.kotlin.android.FindAndroidPerformanceSmells$KtRecipeArtifact
io.moderne.recipe:recipes-kotlinPatterns that drop UI-thread frames or allocate at draw time: findViewById inside onDraw/onMeasure/onLayout, unbounded BitmapFactory.decode* (no inSampleSize), hand-rolled Thread.start() from UI components, Handler.postDelayed (no lifecycle), and pre-coroutine runOnUiThread / View.post dispatch.
Usage
This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.
mod run . --recipe org.openrewrite.kotlin.android.FindAndroidPerformanceSmells$KtRecipeIf the recipe isn’t available locally, install it with:
mod config recipes jar install io.moderne.recipe:recipes-kotlin:0.2.0Definition
This recipe runs the following recipes in order.
- Find
findViewByIdinsideonDraw/onMeasure/onLayoutorg.openrewrite.kotlin.android.FindFindViewByIdInHotPath$KtRecipe - Find
BitmapFactory.decode*callsorg.openrewrite.kotlin.android.FindBitmapFactoryDecode$KtRecipe - Find
Thread { }.start()calls insideActivity/Fragmentorg.openrewrite.kotlin.android.FindManualThreadingInActivity$KtRecipe - Find
Handler.postDelayed(...)callsorg.openrewrite.kotlin.android.FindHandlerPostDelayed$KtRecipe - Find
Activity.runOnUiThread { }/View.post { }callsorg.openrewrite.kotlin.android.FindRunOnUiThread$KtRecipe
Data tables
Structured output this recipe can produce.
- Source files that had resultsSource files that were modified by the recipe run.
org.openrewrite.table.SourcesFileResults - Source files that had search resultsSearch results that were found during the recipe run.
org.openrewrite.table.SearchResults - Source files that errored on a recipeThe details of all errors produced by a recipe run.
org.openrewrite.table.SourcesFileErrors - Recipe performanceStatistics used in analyzing the performance of recipes.
org.openrewrite.table.RecipeRunStats