Wear OS kadran sürekli çalıştığı için gücü verimli bir şekilde kullanması gerekir.
Kadranın performansını mümkün olduğunca optimize edin. Bu sayfada, genel kadran optimizasyonlarıyla ilgili en iyi uygulamaların yanı sıra animasyonları ve resimleri hedefleyen en iyi uygulamalar da yer almaktadır.
Temel optimizasyon
Bu bölümde, kadranınızın genel verimliliğini artırmaya yönelik en iyi uygulamalar yer almaktadır.
Kadran rengi ve parlaklığı
Kadranınızda koyu renkler kullanmak, kol saatinize daha az güç çeker. Aşağıda, kadranın pil kullanımını optimize etmek için kadra arka planını ayarlama önerileri verilmiştir:
- Renk: Mümkün olduğunda siyah arka plan kullanın.
- Parlaklık: Siyah arka plan mümkün olmadığında
arka plan renginin parlaklığını ton, doygunluk, değer (HSV) veya ton, doygunluk, parlaklık (HSB) ölçeğinde% 25 veya daha düşük bir düzeyde tutun. Örneğin, HSV ölçeğiyle tanımlanmış bir arka plan rengi ayarlamak için
Color
sınıfını kullanıyorsanız parlaklığı kontrol eden değer ayarı için 25 veya daha düşük bir değer kullanın.
Telefonla etkileşimde bulunmak için dinamik özellikleri kullanma
Kadran, telefonda çalışmak için işlem gerektirdiğinde kodu yalnızca kadranı etkin durumdayken yürütün. Telefondaki uygulamanın ilgili kadranın etkin olduğunu öğrenmesi için önerilen yöntem CapabilityClient API'dir.
Güç tüketimini izleme
Wear OS tamamlayıcı uygulaması, geliştiriciler ve kullanıcıların giyilebilir cihazdaki farklı işlemlerin ne kadar pil gücü kullandığını görmelerini sağlar. Bunu görmek için Ayarlar > Saat pili bölümüne gidin.
Şifrelemeye duyarlı kadranlar kaydedin
Android 7.0 ve sonraki sürümler dosya tabanlı şifreleme desteği içerir ve şifreleme duyarlı uygulamaların, önyükleme sırasında şifre çözme şifre kodunu sağlamadan önce çalışmasına izin verir. Bu, açılış animasyonundan kadrana geçiş süresini 30 saniyeye kadar kısaltabilir.
Daha hızlı başlatmayı etkinleştirmek için saat yüzü manifestine android:directBootAware="true"
ekleyin.
Not: Bu özelliği, kimlik bilgileriyle şifrelenmiş depolama alanı kullanmayan saat yüzlerinde kullanın.
Animasyonlar için en iyi uygulamalar
Bu bölümdeki en iyi uygulamalar, animasyonlarla ilişkili güç tüketimini azaltmaya yardımcı olur.
Animasyonların kare hızını azaltma
Animasyonlar genellikle hesaplama açısından pahalıdır ve önemli miktarda güç tüketir. Çoğu animasyon saniyede 30 kare hızında görünür. Bu nedenle animasyonlarınızı daha yüksek bir kare hızında çalıştırmayın. Bunun yerine dinamik kare hızlarını kullanabilirsiniz. Daha fazla bilgi için Örnek Kanvas Saat Yüzü bölümüne bakın.
CPU'nun animasyonlar arasında uyku moduna geçmesine izin verin
Pil ömrünü maksimuma çıkarmak için animasyonları tutumlu bir şekilde kullanın. Yanıp sönen iki nokta bile her göz açıp kapayıncaya kadar pil gücünden yararlanır.
Animasyonlar ve kadrandaki küçük değişiklikler CPU'yu uyandırır. Örneğin, etkileşimli modda her saniye kısa animasyon serileri kullanarak ve ardından CPU'nun bir sonraki saniyeye kadar uyku moduna geçmesini sağlayarak CPU'nun animasyonlar arasında uyumasını sağlayın. CPU'nun sık sık, kısa süreliğine bile uyku moduna geçmesini sağlamak güç tüketimini önemli ölçüde azaltabilir.
Resimler için en iyi uygulamalar
Bu bölümdeki en iyi uygulamalar, resimlerle ilişkili güç tüketimini azaltmaya yardımcı olur.
Bit eşlem öğelerinizin boyutunu küçültme
Birçok kadran, bir arka plan resminin yanı sıra dönüştürülüp arka plan resminin üzerine yerleştirilen saat ibreleri ve zaman içinde hareket eden diğer öğeler gibi diğer grafik öğelerden oluşur. Bu grafik öğeler ne kadar büyük olursa dönüştürme işlemi de hesaplama açısından o kadar pahalı olur. Saat yüzü çizme bölümünde açıklandığı gibi sistem, saat yüzünü her yeniden çizdiğinde bu grafik öğeler genellikle
Render.CanvasRenderer.render()
yöntemi içinde döndürülür ve bazen ölçeklendirilir.
![](https://developer.android.com/static/training/wearables/watch-faces/images/ClockHandFull.png?authuser=19&hl=tr)
![](https://developer.android.com/static/training/wearables/watch-faces/images/ClockHandCropped.png?authuser=19&hl=tr)
Şekil 1. Fazladan pikselleri kaldırmak için saatin kollarını kırpın.
Bit eşlem öğelerinizin boyutunu küçültmek, animasyonlarınızın performansını artırır ve güç tasarrufu sağlar. Kadranınızın performansını iyileştirmek için aşağıdaki ipuçlarını uygulayın:
- İhtiyacınız olandan büyük grafik öğeleri kullanmayın.
- Kenarlardaki ekstra şeffaf pikselleri kaldırın.
Örneğin, şekil 1'de soldaki saat aküsü resminin boyutu, şeklin sağ tarafında gösterildiği gibi ekstra şeffaf pikseller kaldırılarak% 97 oranında azaltılabilir.
Bit eşlem öğelerini birleştirme
Sık sık birlikte çizilen bit eşlemleriniz varsa bunları tek bir grafik öğesinde birleştirmeyi düşünün. Örneğin, sistem saat yüzünü her yeniden çizdiğinde iki tam ekran bit eşlem çizmemek için genellikle etkileşimli modda arka plan resmini onay işaretleriyle birleştirebilirsiniz.
Ölçeklendirilmiş bit eşlemler çizerken kenar yumuşatmayı devre dışı bırak
Canvas.drawBitmap()
yöntemini kullanarak Canvas
nesnesine ölçeklendirilmiş bir bit eşlem çizerken çeşitli seçenekleri yapılandırmak için Paint
örneği sağlayabilirsiniz. Performansı artırmak için bu seçeneğin bit eşlemler üzerinde herhangi bir etkisi olmadığından setAntiAlias()
yöntemini kullanarak kenar yumuşatma özelliğini devre dışı bırakın.
![](https://developer.android.com/static/training/wearables/watch-faces/images/BitmapFilterDisabled.png?authuser=19&hl=tr)
![](https://developer.android.com/static/training/wearables/watch-faces/images/BitmapFilterEnabled.png?authuser=19&hl=tr)
2. Şekil. Bit eşlem filtrelemenin devre dışı (solda) ve etkin (sağ) örneğini gösteren örnek.
Bit eşlem filtreleme kullan
Diğer öğelerin üzerine çizdiğiniz bit eşlem öğeleri için setFilterBitmap()
yöntemini kullanarak aynı Paint
örneğinde bit eşlem filtrelemeyi etkinleştirin. Şekil 2'de bit eşlem filtresi uygulanmış ve olmayan bir saat ibresinin büyütülmüş bir görünümü gösterilmektedir.
Not: Ambiyans modu etkinken bit eşlem filtrelemesini devre dışı bırakın. Düşük bitli ortam modunda sistem, bit eşlem filtrelemesinin başarılı bir şekilde işlenmesi için resimdeki renkleri güvenilir şekilde oluşturmaz.
Pahalı işlemleri çizim yönteminin dışına taşıma
Sistem, kadranınızı her yeniden çizdiğinde Render.CanvasRenderer.render()
yöntemini çağırır. Performansı artırmak için yalnızca kadranı güncellemek için kesinlikle gerekli olan işlemleri bu yönteme dahil edin.
Mümkün olduğunda Render.CanvasRenderer.render()
yöntemi içinde aşağıdaki işlemleri yapmaktan kaçının:
- Resimler ve diğer kaynaklar yükleniyor
- Resimleri yeniden boyutlandırma
- Nesneler ayrılıyor
- Sonuçları kareler arasında değişmeyen hesaplamalar
Kadranınızın performansını analiz etmek için CPU Profiler'ı kullanın. Özellikle Render.CanvasRenderer.render()
uygulamanızın yürütme süresinin kısa ve farklı çağrılar arasında tutarlı olduğundan emin olun. Daha fazla bilgi için CPU Profiler ile CPU etkinliğini inceleme bölümüne bakın.
İlgili kaynaklar
Kadran örnek uygulaması, kadran yapılandırmayla ilgili en iyi uygulamaları göstermektedir.