Android, pil tüketimini uygulamalarla nasıl hesaplar?


24

Android, bireysel donanım bileşeni tarafından kullanılan enerjiyi nasıl ölçer? Android, her bir süreç tarafından kullanılan enerjiyi nasıl ölçüyor?


Sanırım 1 saniyede kaç tane talimat verildiğini tahmin ediyorum.
AZ_

6
@Algo: Çok fazla CPU kullanan bir arkaplan uygulamasının çok az CPU, fakat çok fazla Wifi ve GPS ve ekran kullanan diğer bir uygulamadan daha fazla aç pil olduğunu varsaymak tamamen yanıltıcı olacaktır.
Yalan Ryan

Öyleyse, bir uygulamanın aldığı izin sayısından ipucu alabilirsiniz .. sadece bir fikir.
AZ_

@LieRyan, batarya istatistiklerinde bataryanın kendi "tüketicisi" olarak hesaplanan wifi, gps, bluetooth vb. Değil mi?
Ryan Conrad

Yanıtlar:


11

Android, pil kullanımını etkileyen olayları izler ve bu bilgiyi batterystats.bin dosyasına kaydeder. Bazı örnekler:

  • belirli bir brithness ayarıyla zaman ekranının uzunluğu açıktı
  • hangi uygulama (veya Android olmayan uygulama süreci) ve ne kadar süredir uyanma kilidi tuttuğuna (cihazın uyumasını önler)
  • İşlem başına CPU kullanımı (Android uygulaması veya diğer işlem)
  • telefon sinyal gücü
  • GPS kullanımı
  • vb.

Android, her bir Uygulama veya bileşenin (örn. Ekran) üreticide bulunan yapılandırma bilgisine dayanarak ne kadar güç kullandığını hesaplar.

Her şey ölçülmez, bu yüzden istatistikler bazen yanıltıcı olabilir, ancak her Android Platform sürümünde daha iyi hale gelir.

Pil istatistikleri, aşağıdakiler kullanılarak cihazdan atılabilir:

adb shell dumpsys batterystats

İşte Diane Hackborn'un yazdığı kilitlerin güç tüketimiyle ilgili daha fazla ayrıntı içeren bir yazısının ilginç bir parçası :

Uyanık kilitlerden güç hesaplanmasının iki yolu vardır.

  1. Bazı yonga kümelerinde, basit bir uyandırma kilidinin tutulması, CPU'nun tamamen derin bir uykuya girmesini önlemelidir. Bildirilen pil kullanımında, bu ekstra güç kullanımı, uyandırma kilitlerini tutan tüm uygulamalara dağıtılacaktır.

  2. Uyandırma kilidinin kendisi güç kullanımına yol açmasa bile, bir uygulamada bir uyandırma kilidinin tutulması, diğer uygulamaların çalışmamasına ve CPU'yu başka türlü yapmadıklarında çalıştırmasına izin verebilir. (Örneğin, bazı uygulamalarda bir {uyku (1); bir şey yapın;} uyandırma kilitleri tutulmazsa çalıştırılmayan bir döngü olabilir.) Bunu ele almak için uygulamaların CPU kullanımının yarısı suçlanmak üzere dağıtılır. kilitleri tutanlar.


Cevabınızı kanıtlayan kaynaklar / referanslar sunabilir misiniz?
diimdeep

Tüm bilgiler, bu alana aşina olan Google geliştiricisi tarafından sağlanan google + thread bağlantısından.
Paweł Nadolski

1
Yeni aygıtlar için doğru komut (hangi API’den olduğundan emin olmanız gerekir): adb shell dumpys batterystats, veya (bir dosya içinde isteniyorsa): adb shell dumpsys batterystats> batterystats.txt
android developer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.