Gereksiz veya uyumlu işlemlerden kaynaklanan performans sorunları yaşıyorsanız yeniden bestelemezseniz uygulamanızın kararlılığında hata ayıklamanız gerekir. Bu kılavuz bunun için çeşitli yöntemleri özetliyor.
Düzen Denetleyicisi
Android Studio'daki Düzen Denetleyicisi, hangi composable'ların en iyi uygulamaları paylaşacağız. Compose'un bu metinle kaç defa veya bir bileşeni atladı.
Derleyici raporları oluşturma
Compose derleyicisi, inceleme. Bu çıkışı kullanarak composable'larınızdan hangilerinin atlanabilen ve olmayanlar. Aşağıdaki alt bölümlerde bu politikaların ancak daha ayrıntılı bilgi için teknik dokümanlarına göz atın.
Kurulum
Derleyici raporları oluşturma özelliği varsayılan olarak etkin değildir. Bunları şununla etkinleştirebilirsiniz:
derleyici işaretidir. Tam kurulum, kullandığınız ada
projesidir, ancak Compose derleyici gradle eklentisini kullanan projeler için
her modül build.gradle
dosyasına aşağıdakileri ekleyin.
android { ... }
composeCompiler {
reportsDestination = layout.buildDirectory.dir("compose_compiler")
metricsDestination = layout.buildDirectory.dir("compose_compiler")
}
Derleyici raporları oluşturma artık projenizi derlerken oluşturulacak.
Örnek çıkış
reportsDestination
üç dosya çıktısı verir. Aşağıda örnek çıkışlar verilmiştir
JetSnack'ten.
<modulename>-classes.txt
: Bu modülünü kullanabilirsiniz. Örnek.<modulename>-composables.txt
: Ne kadar yeniden başlatılabileceği ve modüldeki gibi, atlanabilir composable'ların Örnek.<modulename>-composables.csv
: composables raporununCSV
sürümü içe aktarabilirsiniz. Örnek
Oluşturulabilirler raporu
composables.txt
dosyası, verilen
modülünün parametrelerinin kararlılığı ve yüksek performanslı olup olmadıkları
veya atlanabilir. Bu örnekte Google’ın
JetSnack:
restartable skippable scheme("[androidx.compose.ui.UiComposable]") fun SnackCollection(
stable snackCollection: SnackCollection
stable onSnackClick: Function1<Long, Unit>
stable modifier: Modifier? = @static Companion
stable index: Int = @static 0
stable highlight: Boolean = @static true
)
Bu SnackCollection
composable tamamen yeniden başlatılabilir, atlanabilir ve
kararlı hale getirebilirsiniz. Zorunlu olmasa da bu genellikle tercih edilir.
Diğer taraftan, şimdi başka bir örneğe bakalım.
restartable scheme("[androidx.compose.ui.UiComposable]") fun HighlightedSnacks(
stable index: Int
unstable snacks: List<Snack>
stable onSnackClick: Function1<Long, Unit>
stable modifier: Modifier? = @static Companion
)
HighlightedSnacks
composable, atlanabilir değil. Besteleme özelliği hiçbir zaman atlanmaz
bazı ipuçları vereceğim. Bu durum, parametrelerinden hiçbiri değişmemiş olsa bile ortaya çıkar.
Bunun nedeni unstable
parametresidir (snacks
).
Sınıf raporu
classes.txt
dosyası, verilen
modülünü kullanabilirsiniz. Aşağıdaki snippet, Snack
sınıfının çıktısıdır:
unstable class Snack {
stable val id: Long
stable val name: String
stable val imageUrl: String
stable val price: Long
stable val tagline: String
unstable val tags: Set<String>
<runtime stability> = Unstable
}
Referans olması amacıyla, Snack
öğesinin tanımı aşağıdaki gibidir:
data class Snack(
val id: Long,
val name: String,
val imageUrl: String,
val price: Long,
val tagline: String = "",
val tags: Set<String> = emptySet()
)
Compose derleyicisi Snack
kararsız olarak işaretlendi. Bunun nedeni, projenizin
tags
parametresi Set<String>
. Bu sabit bir türdür çünkü
bir MutableSet
değil. Ancak Set, List
gibi standart koleksiyon sınıfları,
ve Map
, nihai olarak arayüzdür. Dolayısıyla, temel uygulama,
olabilir.
Örneğin, val set: Set<String> = mutableSetOf("foo")
yazabilirsiniz. İlgili içeriği oluşturmak için kullanılan
değişkeni sabittir ve bildirilen türü değiştirilemez ancak
uygulama hâlâ değişebilir. Compose derleyicisi
sabitliğini korur. Bu nedenle,
tags
kararlı değil.