Sistem, Wear OS cihazların mümkün olan en iyi pil ömrünü sağlamak için bellek kullanımı hesaplaması yapar. Wear OS uygulama kalite yönergeleri kapsamında, saat kadranı biçimini kullanan kadranlar, saatin mevcut durumuna bağlı olarak kullanabilecekleri bellek miktarı açısından sınırlara sahiptir:
- Ambiyans modunda kadran 10 MB'tan fazla bellek kullanamaz.
- Etkileşimli modda kadran 100 MB'tan fazla bellek kullanamaz.
Sistem, kadranın bellek kullanımını hesaplar
Sistem, kadran biçimini kullanan bir kadranda bir resim veya bitmap yazı tipinin kapladığı alanı hesaplamak için aşağıdaki adımları tamamlar:
- Resmin veya bitmap yazı tipinin sıkıştırmasını kaldırır.
- Aşağıdaki yöntemlerden biriyle optimize edilip edilmeyeceğini görmek için resmi veya bit eşlem yazı tipini inceler:
- Ekran boyutuna daha uygun olacak şekilde yeniden boyutlandırılır.
- Tamamen şeffaf pikselleri kaldırmak için kırpılmıştır.
- Gerçeklik kaybı olmadan yapılabiliyorsa RGB565 olarak aşağı örneklenir.
Ortaya çıkan sınırlayıcı kutuya bağlı olarak sistem, görüntünün veya bit eşlem yazı tipinin boyutunu aşağıdakilerden biri şeklinde bayt cinsinden hesaplar:
- RGBA8888 kullanan resimler ve yazı tipleri için: \( 4 \times width \times height \)
- RGB565 kullanan resimler ve yazı tipleri için: \( 2 \times width \times height \)
- ALPHA_8 bitmap yapılandırmasını kullanan resimler ve yazı tipleri için: \( width \times height \)
Etkileşimli mod
Sistem, etkileşimli mod için bellek kullanımını hesaplarken aşağıdakilerin toplamını hesaplar:
- Tüm vektor yazı tiplerinin işlenmemiş boyutu.
- Sistemin varsayılan yazı tipinin tahmini kullanımı.
- Kırpma, yeniden boyutlandırma veya yeniden biçimlendirme uygulandıktan sonra resimlerin ve bitmap yazı tiplerinin toplam boyutu.
Yapılandırmalar
Sistem, yapılandırmalar içeren kadranlar için farklı yapılandırmalarda kullanılan kaynakların toplam boyutunu hesaplamaya çalışır. Çok sayıda kombinasyon olduğunda sistem, farklı yapılandırmalarda aynı anda ne kadar kaynak kullanıldığını biraz fazla tahmin edebilir.
Ambiyans modu ve katmanlar
Ambiyans modu için sistem, saatin ikisi tamamen statik olan üç adede kadar tam ekran katmanı kullanılarak oluşturulduğunu varsayar:
- Saat öğelerinin altındaki her şey. Kadran "gövdesinin" çoğu bu katmanda birleştirilir. Bu katmanın çizilmesi için kaç resim kullanıldığı önemli değildir. Sistem bunu tek bir tam ekran resim olarak sayar.
- Dinamik olarak oluşturulan platform bağlamalarına sahip tüm kadran ibreleri, dijital ekranlar veya komplikasyonlar.
- Kaynak XML dosyasında kadran ibreleri ve komplikasyonlardan sonra listelenen tüm öğeler.
Genellikle ambiyans modunda en fazla bellek kullanımı, özellikle büyük olanlar olmak üzere bit eşlem yazı tiplerinden kaynaklanır.
Bellek kullanımını azaltma yöntemleri
Bu bölümlerdeki önerileri uygulayarak bellek tüketimi bu sınırlar içinde kalan bir kadran oluşturma olasılığınız artar.
Bitmap yazı tiplerini kırpma ve yeniden boyutlandırma
Resimlerinizi ve BitmapFont
nesnelerinizi kırpıp görüntü boyutlarına uyacak şekilde yeniden
boyutlandırın.
Wear OS bir kadran çizerken tüm resimlerin sıkıştırması kaldırılır. Çoğunlukla boş olan tam ekran bir resim diskte 3 KB'lık yer kaplar ancak 450 piksel x 450 piksel ekranda gösterilirse sistem resmin sıkıştırmasını kaldırarak bellekteki boyutunu 750 KB veya daha büyük hale getirir.
Tutarlı bit eşlem yazı tipi yükseklikleri kullanın
BitmapFont
kullanıldığında, bir karakterin tüm resimlerinin yüksekliği aynı olmalıdır. Benzer bir şekilde, kelimelere ilişkin tüm görsellerin her biri aynı yüksekliğe sahip olmalıdır.
Animasyonlarda tutarlı kare boyutları kullanın
Bir resmi, kadranda taşımak yerine resim içindeki öğeleri güncelleyin ve sınırlayıcı kutuyu kadrana göre aynı konumda tutun. Örneğin, kadranınızda bir daireyi hareket ettirmek istiyorsanız daireyi kadran üzerinde kaydırarak değil, rengini değiştirerek hareket ettirebilirsiniz.
Bu teknik, sistemin animasyon için hesapladığı sınırlayıcı kutunun boyutunu azaltır.
Resimleri tekilleştirme
Kadranınızda aynı resmin birden fazla kopyası gösteriliyorsa bu resmin yalnızca bir kopyasını kaynak dizininize ekleyin ve bu kopyaya birden fazla kez referans verin.
Yayınları kullanarak ilerleme durumunu gösterme
1 dakika veya 1 saat sonra tamamlanan bir ilerleme çubuğunu taklit etmek için 60 ayrı resim kullanmayın. Bunun yerine, aşağıdaki kod snippet'inde gösterildiği gibi uzunluğunu kontrol eden bir ifade içeren bir Arc
nesnesi oluşturun:
<PartDraw angle="0" width="400" height="400" name="ProgressBar" pivotX="0.5" pivotY="0.5 x="40" y="40"> <Arc centerX="200" centerY="200" width="400" height="400" startAngle="0" endAngle="360"> <!-- Completes a "progress loop" every minute. --> <Transform target="endAngle" value="0 + (clamp([SECOND], 0, 60) - 0) * 6" /> <Stroke cap="ROUND" color="#123456" thickness="10" /> </Arc> </PartDraw>
Örneğin, retro dijital saat tarzı bir görünüm elde etmek için kesintisiz olmayan bir çizgi görüntülemek istiyorsanız Stroke
nesnesi için kısa çizgi özelliğini veya yarı saydam maske resim yer paylaşımını kullanın.
Kol saati ibrelerini ve komplikasyonları kaynak dosyanın sonuna yerleştirin
XML düğümleri, kaynak XML dosyasında listelendikleri sırayla çizilir. Sistem, kol saati ibrelerini ve komplikasyonları dosyanın sonuna yerleştirerek ortam modu bellek hesaplamasından bir katmanın tamamını çıkarır.
Kadranınızın bellek kullanımını değerlendirme
Kadranınızın bellek kullanımını ölçmek için GitHub'daki watchface
deposunda bulunan bellek ayak izi değerlendirme aracını kullanın.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Erz
- Çizgi
- Dikdörtgen