Askıya alma modu

SoC güç durumları

Bir çip (SoC) üzerindeki sistemin güç durumları şunlardır: açık, boşta ve askıda. "Açık", SoC'nin çalıştığı zamandır. "Boşta", SoC'nin çalıştırıldığı ancak herhangi bir görevi yerine getirmeyen orta güç modudur. "Askıya Al", SoC'ye güç verilmeyen bir düşük güç modudur. Bu modda cihazın güç tüketimi genellikle "Açık" moddakinden 100 kat daha azdır.

Uyandırılmayan sensörler

Uyandırılmayan sensörler, SoC'nin askıya alma moduna geçmesini engellemeyen ve verileri rapor etmek için SoC'yi uyandırmayan sensörlerdir. Özellikle, sürücülerin uyandırma kilidi tutmasına izin verilmez. Ekran kapalıyken uyanmayan sensörlerden olayları almak istemeleri durumunda kısmi uyanık kalma kilidi tutmak uygulamaların sorumluluğundadır. SoC askıya alma modundayken, sensörler çalışmaya ve bir donanım FIFO'suna yerleştirilen olaylar oluşturmaya devam etmelidir. (Daha fazla ayrıntı için Gruplama konusuna bakın.) FIFO'daki olaylar, SoC uyandığında uygulamalara teslim edilir. FIFO tüm olayları depolamak için çok küçükse, eski olaylar kaybolur; en eski veriler, en son verileri barındırmak için bırakılır. FIFO'nun olmadığı aşırı durumda, SoC askıya alma modundayken oluşturulan tüm olaylar kaybolur. Bir istisna, her değişim sensöründen gelen en son olaydır: son olay, kaybolmaması için FIFO'nun dışınakaydedilmelidir .

SoC askıya alma modundan çıkar çıkmaz, FIFO'daki tüm olaylar raporlanır ve işlemler normal şekilde devam eder.

Uyandırma olmayan sensörleri kullanan uygulamalar, sistemin askıya alınmamasını sağlamak için bir uyandırma kilidi tutmalı, ihtiyaç duymadıklarında sensörlerin kaydını silmeli veya SoC bekleme modundayken olayları kaybetmeyi beklemelidir.

Uyandırma sensörleri

Uyandırma sensörlerinin aksine uyandırma sensörleri, verilerinin SoC'nin durumundan bağımsız olarak iletilmesini sağlar. SoC uyanıkken, uyandırma sensörleri uyanmayan sensörler gibi davranır. SoC uyurken, uyandırma sensörlerinin olayları iletmek için SoC'yi uyandırması gerekir. Yine de SoC'nin askıya alma moduna girmesine izin vermeleri gerekir, ancak aynı zamanda bir olayın bildirilmesi gerektiğinde onu uyandırmaları gerekir. Yani sensör, SoC'yi uyandırmalı ve maksimum raporlama gecikmesi geçmeden veya donanım FIFO'su dolmadan olayları teslim etmelidir. Daha fazla ayrıntı için Gruplama konusuna bakın.

Uygulamaların SoC uykuya geçmeden önce olayı alacak zamana sahip olmasını sağlamak için, sürücünün her olay rapor edildiğinde 200 milisaniye için bir "zaman aşımı uyandırma kilidi" tutması gerekir. Yani, SoC'nin bir uyanma kesintisinin ardından 200 milisaniye içinde uykuya dönmesine izin verilmemelidir. Bu gereksinim gelecekteki bir Android sürümünde ortadan kalkacak ve o zamana kadar bu zaman aşımı uyandırma kilidine ihtiyacımız var.

Uyanma ve uyanmama sensörleri nasıl tanımlanır?

KitKat'a kadar, bir sensör ister uyanma isterse uyanma sensörü olsun, sensör türü tarafından belirleniyordu: yakınlık sensörü ve önemli hareket detektörü haricinde çoğu uyanmayan sensörlerdi.

L'den başlayarak, belirli bir sensörün bir uyandırma sensörü olup olmadığı, sensör tanımındaki bir bayrakla belirtilir. Çoğu sensör, aynı sensörün uyanma ve uyanmama varyantlarının çiftleriyle tanımlanabilir; bu durumda, birbirleriyle etkileşime girmeyen iki bağımsız sensör gibi davranmaları gerekir. Daha fazla ayrıntı için Etkileşim bölümüne bakın.

Sensör tipi tanımında aksi belirtilmediği sürece, Sensör tipleri bölümünde listelenen her sensör tipi için bir uyandırma sensörü ve bir uyanmama sensörü kullanılması önerilir. Her sensör tipi tanımında, SensorManager.getDefaultSensor(sensorType) tarafından hangi sensörün (uyanma veya uyanmama) döndürüleceğini SensorManager.getDefaultSensor(sensorType) . Çoğu uygulamanın kullanacağı sensördür.