SoC güç durumları
Çip üzerinde sistem (SoC) güç durumları: açık, boşta ve askıya alınmış. "Açık", SoC'nin çalıştığı durumdur. "Boş", SoC'nin açık olduğu ancak herhangi bir görev gerçekleştirmediği orta güç modudur. "Askıya alma", SoC'nin güçlenmediği düşük güç modudur. Cihazın bu moddaki güç tüketimi genellikle "Açık" moddakinden 100 kat daha azdır.
Uyandırma dışı sensörler
Uyandırma olmayan sensörler, SoC'nin askıya alma moduna girmesini engellemeyen ve SoC'yi veri bildirmek için uyandırmayan sensörlerdir. Özellikle sürücülerin uyanık tutma kilitlerini tutmasına izin verilmez. Ekran kapalıyken uyanık kalmayan sensörlerden etkinlik almak isteyen uygulamaların kısmi uyanık kalma kilidini tutmak uygulamasının sorumluluğundadır. SoC askıya alma modundayken sensörler çalışmaya ve donanım FIFO'suna yerleştirilen etkinlikler oluşturmaya devam etmelidir. (Daha fazla bilgi için Gruplandırma bölümüne bakın.) FIFO'daki etkinlikler, SoC uyanık olduğunda uygulamalara iletilir. FIFO, tüm etkinlikleri saklamak için çok küçükse eski etkinlikler kaybedilir. En yeni verilere yer açmak için en eski veriler atılır. FIFO'nun bulunmadığı uç durumda, SoC askıya alınmış moddayken oluşturulan tüm etkinlikler kaybolur. Bunun tek istisnası, her değişiklik algılama sensöründen gelen son etkinliktir: Kaybedilmemesi için son etkinlik FIFO'nun dışında kaydedilmelidir .
SoC askıya alma modundan çıkar çıkmaz FIFO'daki tüm etkinlikler bildirilir ve işlemler normal şekilde devam eder.
Uyandırma dışı sensörler kullanan uygulamalar, sistemin askıya alınmamasını sağlamak için uyanma kilidi tutmalı, ihtiyaç duymadıkları zaman sensörlerden kaydolma işlemini iptal etmeli veya SoC askıya alma modundayken etkinlikleri kaybetmeyi beklemelidir.
Uyandırma sensörleri
Uyandırma sensörleri, uyanma sensörlerinin aksine verilerinin SoC'nin durumundan bağımsız olarak gönderilmesini sağlar. SoC uyanıkken uyanma sensörleri, uyanma sensörü olmayan sensörler gibi davranır. SoC uykudayken, etkinleşme sensörleri etkinlikleri iletmek için SoC'yi uyandırmalıdır. SoC'nin askıya alma moduna geçmesine izin vermeleri gerekir ancak bir etkinliğin bildirilmesi gerektiğinde SoC'yi uyandırmaları da gerekir. Yani sensör, SoC'yi uyandırmalı ve maksimum raporlama gecikmesi dolmadan veya donanım FIFO'su dolmadan önce etkinlikleri göndermelidir. Daha fazla bilgi için Gruplandırma bölümüne bakın.
SoC uykuya dönmeden önce uygulamaların etkinliği alması için sürücünün, her etkinlik bildirildiğinde 200 milisaniye boyunca bir "zaman aşımı uyanma kilidi" tutması gerekir. Yani, SoC'nin uyanma kesintisini izleyen 200 milisaniye içinde tekrar uykuya dönmesine izin verilmemelidir. Bu şart, gelecekteki bir Android sürümünde kaldırılacak. O zamana kadar bu zaman aşımı uyanma kilidine ihtiyacımız var.
Uyandırma ve uyandırma yapmayan sensörler nasıl tanımlanır?
KitKat'a kadar, bir sensörün uyandırıcı mı yoksa uyandırıcı olmayan mı olduğu sensör türüne göre belirleniyordu: Yakındaki nesneleri algılama sensörü ve önemli hareket algılayıcı hariç olmak üzere çoğu uyandırıcı olmayan sensörlerdi.
L sürümünden itibaren, belirli bir sensörün uyanma sensörü olup olmadığı, sensör tanımındaki bir işaretle belirtilir. Çoğu sensör, aynı sensörün uyanma ve uyanma olmayan varyantlarının çiftleriyle tanımlanabilir. Bu durumda, birbirleriyle etkileşime geçmeden iki bağımsız sensör gibi davranmaları gerekir. Daha fazla bilgi için etkileşim bölümüne bakın.
Sensör türü tanımında aksi belirtilmedikçe, Sensör türleri bölümünde listelenen her sensör türü için bir uyanma sensörü ve bir uyanma sensörü olmayan sensör uygulamanız önerilir. Her sensör türü tanımında, SensorManager.getDefaultSensor(sensorType)
tarafından hangi sensörün (uyandırma veya uyandırmama) döndürüleceğini görebilirsiniz. Çoğu uygulamanın kullanacağı sensör budur.