Performansı resimler için optimize etme

Resimlerle çalışmak dikkatli olun. Çalışırken bir OutOfMemoryError ile kolayca karşılaşabilirsiniz büyük bit eşlemlere sahip olabilir. Uygulamanızın iyi performans göstermesini sağlamak için bu en iyi uygulamalardan yararlanın: en iyisi.

Yalnızca ihtiyacınız olan bit eşlemin boyutunu yükleyin

Çoğu akıllı telefon, büyük görüntü dosyaları oluşturan yüksek çözünürlüklü kameralara sahiptir. Eğer ekranda bir resim gösteriyorsanız videonun çözünürlüğünü veya resmi, yalnızca görüntü kapsayıcınızın boyutuna kadar yükleyin. İlgili içeriği oluşturmak için kullanılan sabit bir şekilde yüklenmesi, GPU önbelleklerini tüketebilir ve bu da kullanıcı arayüzü oluşturmada daha düşük performans sağlar.

Resim boyutlarını yönetmek için:

  • Resim dosyalarınızı mümkün olduğunca küçük hale getirin (bu çıkış resmi) ekleyin.
  • JPEG veya PNG yerine resimlerinizi WEBP biçimine dönüştürmeyi düşünün.
  • Farklı ekran çözünürlükleri için daha küçük resimler sağlayın (3. İpucuna bakın),
  • Resminizi size yardımcı olabilir. Bu, uygulamanızın yükleme performansının iyileştirilmesine dikkat edin.
ziyaret edin.

Mümkün olduğunda bit eşlemler yerine vektörleri kullanın

Ekranda görsel olarak bir şeyi temsil ederken bunun mümkün olup olmadığına karar vermeniz gerekir. bir vektör olarak temsil edilip edilmeyeceğini belirtir. Bit eşlemler yerine vektör resimleri pikselleştirmeyeceğinden emin olabilirsiniz. Ancak her şey bir vektör olarak temsil edilebilir (fotoğraf makinesiyle çekilen resimler dönüştürülemez) bir vektöre dönüştürülür.

Farklı ekran boyutları için alternatif kaynaklar sağlama

Uygulamanızla birlikte resim gönderiyorsanız farklı boyutlarda feed'ler sunabilirsiniz. farklı cihaz çözünürlüklerine uygun öğeler kullanabilirsiniz. Bu şekilde indirme boyutunu küçültebilirsiniz ve uygulama yükleme süresi azaldıkça performansı artırırsınız. daha düşük çözünürlüklü bir cihazda kullanmanız gerekir. Paydaş analizine hazırlanırken farklı boyutlar için alternatif bit eşlemleri görmek istiyorsanız bunun alternatif bit eşlem dokümanlarına göz atın.

ImageBitmap kullanırken çizimden önce prepareToDraw işlevini çağırın

ImageBitmap kullanırken dokuyu GPU'yu kullanmaya başlamadan önce ImageBitmap#prepareToDraw() işlevini çağırın. Bu GPU'nun dokuyu hazırlamasına ve genel bir görüntü oluşturmada ve görsellerdir. Çoğu resim yükleme kitaplığı bu optimizasyonu zaten yapar, ancak ImageBitmap sınıfıyla kendiniz çalışıyorsanız unutmayın.

composable'ınıza Painter yerine parametre olarak bir Int DrawableRes veya URL iletmeyi tercih edin

Resimler üzerinde çalışmanın karmaşık olması nedeniyle (örneğin, işlevi (Bitmaps) işlem yükü açısından pahalı olacaktırsa Painter API kararlı sınıf olarak işaretlenmediğini unutmayın. Kararsız sınıflar gereksiz yeniden birleştirmelere neden olabilir. Çünkü derleyici, veriler değişti.

Bu nedenle, parametre olarak bir URL veya çekilebilir kaynak kimliğinin iletilmesi tercih edilir. kodunu Painter iletmek yerine composable'a gönderebilirsiniz.

// Prefer this:
@Composable
fun MyImage(url: String) {

}
// Over this:
@Composable
fun MyImage(painter: Painter) {

}

Bir bit eşlemi, ihtiyaç duyduğunuzdan daha uzun bir süre bellekte depolamayın

Belleğe ne kadar çok bit eşlem yüklerseniz, bellekte yer kalmadığını fark etmiş olabilirsiniz. Örneğin, composable'ın hazır olduğunu düşünüyorsanız hafızanın yeterli olduğundan emin olmak içinLazyColumnLazyRow bir miktar tasarruf edilir.

Büyük resimleri AAB/APK dosyanızla paketlemeyin

Uygulama indirme boyutunun büyük olmasının en önemli nedenlerinden biri, AAB veya APK dosyasında paketlenmiş olarak gelir. APK analiz edici aracını kullanarak gereken resim dosyalarından daha büyük paketlemediğinizden emin olun. Boyutları küçültün resimleri bir sunucuya yerleştirin ve yalnızca gerektiğinde indirmeyi düşünün.

ziyaret edin.