Askıya alma modu

SoC güç durumları

Bir çipteki (SoC) sistemin güç durumları şunlardır: açık, boşta ve askıya alınmış. "Açık", SoC çalıştığı zamandır. "Boşta", SoC'nin çalıştırıldığı ancak herhangi bir görev gerçekleştirmediği bir orta güç modudur. "Askıya alma", SoC'ye güç verilmediği düşük güç modudur. Cihazın bu moddaki güç tüketimi genellikle “Açık” moddan 100 kat daha azdır.

Uyanmayan sensörler

Uyanmayan sensörler, SoC'nin askıya alma moduna geçmesini engellemeyen ve SoC'yi verileri bildirmek için uyandırmayan sensörlerdir. Özellikle, sürücülerin uyandırma kilidi tutmasına izin verilmez. Ekran kapalıyken, uyanmayan sensörlerden olay almak istemeleri durumunda kısmi bir uyandırma kilidi tutmak, uygulamaların sorumluluğundadır. SoC askıya alma modundayken, sensörler çalışmaya devam etmeli ve bir donanım FIFO'suna yerleştirilen olayları oluşturmalıdır. (Daha fazla ayrıntı için bkz. Gruplama.) FIFO'daki olaylar, SoC uyandığında uygulamalara iletilir. 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 bulunmadığı aşırı durumda, SoC askıya alma modundayken oluşturulan tüm olaylar kaybolur. Bir istisna, her bir değişim sensöründen gelen en son olaydır: son olay , kaybolmaması için FIFO'nun dışına kaydedilmelidir .

SoC askıya alma modundan çıkar çıkmaz, FIFO'dan gelen tüm olaylar rapor edilir ve işlemler normal şekilde devam eder.

Uyanmayan sensörleri kullanan uygulamalar, sistemin askıya alınmamasını, ihtiyaç duymadıklarında sensörlerin kaydını silmemesini veya SoC askıya alma modundayken olayları kaybetmeyi beklememesini sağlamak için bir uyandırma kilidine sahip olmalıdır.

Uyandırma sensörleri

Uyanmayan sensörlerin aksine, uyandırma sensörleri, verilerinin SoC'nin durumundan bağımsız olarak iletilmesini sağlar. SoC uyanıkken, uyandırma sensörleri, uyandırma olmayan sensörler gibi davranır. SoC uykudayken, uyandırma sensörleri olayları iletmek için SoC'yi uyandırmalıdır. Yine de SoC'nin askıya alma moduna geçmesine izin vermeliler, ancak ayrıca bir olayın rapor edilmesi gerektiğinde onu uyandırmaları gerekir. Yani, sensör SoC'yi uyandırmalı ve olayları maksimum raporlama gecikmesi sona ermeden veya donanım FIFO'su dolmadan önce iletmelidir. Daha fazla ayrıntı için Toplu İşleme bakın.

Uygulamaların, SoC uyku moduna geçmeden önce olayı alacak zamana sahip olduğundan emin olmak için, sürücünün her olay bildirildiğinde 200 milisaniye boyunca bir "zaman aşımı uyandırma kilidi" tutması gerekir. Yani, SoC'nin bir uyandırma kesintisinden sonraki 200 milisaniye içinde tekrar uyku moduna geçmesine 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.

Uyandırma ve uyandırma olmayan sensörler nasıl tanımlanır?

KitKat'a kadar, bir sensörün uyandırma mı yoksa uyandırmama sensörü mü olduğu sensör tipine göre belirlenirdi: yakınlık sensörü ve önemli hareket dedektörü dışında çoğu uyandırma olmayan sensörlerdi.

L'den başlayarak, belirli bir sensörün uyandırma sensörü olup olmadığı sensör tanımındaki bir bayrakla belirtilir. Çoğu sensör, aynı sensörün uyandırma ve uyandırma olmayan varyantları ile 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'e bakın.

Sensör tipi tanımında aksi belirtilmedikçe, Sensör tipleri bölümünde listelenen her sensör tipi için bir uyandırma sensörü ve bir uyandırma olmayan sensörün uygulanması tavsiye edilir. Her sensör tipi tanımında, SensorManager.getDefaultSensor(sensorType) tarafından hangi sensörün (uyanma veya uyanmama) döndürüleceğini görün. Çoğu uygulamanın kullanacağı sensördür.