Modus penangguhan

Status daya SoC

Status daya sistem pada sebuah chip (SoC) adalah: hidup, menganggur, dan ditangguhkan. “Aktif” adalah saat SoC sedang berjalan. “Idle” adalah mode daya sedang di mana SoC dihidupkan tetapi tidak melakukan tugas apa pun. “Suspend” adalah mode daya rendah di mana SoC tidak diberi daya. Konsumsi daya perangkat dalam mode ini biasanya 100 kali lebih sedikit dibandingkan dengan mode “Aktif”.

Sensor non-bangun

Sensor non-bangun adalah sensor yang tidak mencegah SoC masuk ke mode tunda dan tidak membangunkan SoC untuk melaporkan data. Secara khusus, pengemudi tidak diperbolehkan melakukan wake-lock. Aplikasi bertanggung jawab untuk menjaga penguncian layar saat aktif sebagian jika aplikasi ingin menerima peristiwa dari sensor non-bangun saat layar mati. Saat SoC berada dalam mode penangguhan, sensor harus terus berfungsi dan menghasilkan peristiwa, yang dimasukkan ke dalam FIFO perangkat keras. (Lihat Batching untuk rincian lebih lanjut.) Peristiwa di FIFO dikirimkan ke aplikasi ketika SoC aktif. Jika FIFO terlalu kecil untuk menyimpan semua kejadian, kejadian lama akan hilang; data terlama dihilangkan untuk menampung data terbaru. Dalam kasus ekstrim ketika FIFO tidak ada, semua peristiwa yang dihasilkan saat SoC dalam mode penangguhan akan hilang. Satu pengecualian adalah kejadian terbaru dari setiap sensor on-change: kejadian terakhir harus disimpan di luar FIFO sehingga tidak dapat hilang.

Segera setelah SoC keluar dari mode penangguhan, semua peristiwa dari FIFO dilaporkan dan operasi dilanjutkan seperti biasa.

Aplikasi yang menggunakan sensor non-bangun harus menahan penguncian layar saat aktif untuk memastikan sistem tidak ditangguhkan, membatalkan pendaftaran dari sensor saat tidak diperlukan, atau diperkirakan akan kehilangan peristiwa saat SoC berada dalam mode tangguhkan.

Sensor bangun

Berbeda dengan sensor non-bangun, sensor bangun memastikan bahwa datanya dikirimkan secara independen, apa pun status SoC. Saat SoC aktif, sensor bangun berperilaku seperti sensor non-bangun. Saat SoC tertidur, sensor bangun harus membangunkan SoC untuk mengirimkan peristiwa. Mereka tetap harus membiarkan SoC masuk ke mode penangguhan, tetapi juga harus mengaktifkannya ketika suatu peristiwa perlu dilaporkan. Artinya, sensor harus membangunkan SoC dan mengirimkan peristiwa sebelum latensi pelaporan maksimum berlalu atau FIFO perangkat keras menjadi penuh. Lihat Pengelompokan untuk lebih jelasnya.

Untuk memastikan aplikasi mempunyai waktu untuk menerima kejadian sebelum SoC kembali ke mode tidur, pengemudi harus menahan "timeout wake lock" selama 200 milidetik setiap kali kejadian dilaporkan. Artinya, SoC tidak boleh kembali ke mode tidur dalam 200 milidetik setelah gangguan bangun. Persyaratan ini akan hilang pada rilis Android mendatang, dan kami memerlukan penguncian layar saat aktif dengan batas waktu ini hingga saat itu.

Bagaimana cara menentukan sensor bangun dan tidak bangun?

Hingga KitKat, apakah suatu sensor merupakan sensor bangun atau tidak, ditentukan oleh jenis sensornya: sebagian besar merupakan sensor non-bangun, dengan pengecualian sensor jarak dan detektor gerakan signifikan .

Dimulai dari L, apakah sensor tertentu merupakan sensor bangun atau tidak, ditentukan oleh tanda dalam definisi sensor. Sebagian besar sensor dapat ditentukan oleh pasangan varian bangun dan non-bangun dari sensor yang sama, dalam hal ini keduanya harus berperilaku sebagai dua sensor independen, tidak berinteraksi satu sama lain. Lihat Interaksi untuk lebih jelasnya.

Kecuali ditentukan lain dalam definisi jenis sensor, disarankan untuk menerapkan satu sensor bangun dan satu sensor non-bangun untuk setiap jenis sensor yang tercantum dalam Jenis sensor . Di setiap definisi jenis sensor, lihat sensor apa (wake-up atau non-wake-up) yang akan dikembalikan oleh SensorManager.getDefaultSensor(sensorType) . Ini adalah sensor yang akan digunakan sebagian besar aplikasi.