PowerManager (perkhidmatan kuasa)
Pengenalan kepada bahagian ini:
Bahagian ini akan menerangkan perkhidmatan sistem yang disediakan oleh Android - PowerManager (perkhidmatan kuasa) , yang digunakan Uruskan CPU untuk dijalankan dan papan kekunci atau skrin untuk menyala walau bagaimanapun, jangan gunakan kelas ini melainkan anda perlu Selepas anda menggunakannya, pastikan anda melepaskannya tepat pada masanya! Bahagian ini tidak akan menerangkan B ini dengan terlalu mendalam, kerana ia melibatkan beberapa asas Perkara yang perlu kita kaji secara mendalam pada masa hadapan ~ Bahagian ini terutamanya memperkenalkan beberapa konsep asas, PowerManager, wakelock Mekanisme kunci dan banyak lagi!
Dokumentasi API rasmi: PowerManager
1 Apakah itu PowerManager
Sistem Android untuk kami. Menyediakan API untuk pengurusan kuasa, dan antara muka berkaitannya berkait rapat dengan hayat bateri peranti. Pegawai itu juga berkata bahawa melainkan ia benar-benar perlu, anda harus cuba mengelak daripada menggunakan kelas ini dan melepaskannya tepat pada masanya selepas digunakan
Apa yang dipanggil pengurusan kuasa termasuk: CPU berjalan, papan kekunci atau skrin menyala! Inti sebenarnya adalah mekanisme wakelock Selagi kita memegang kunci ini, Kemudian sistem tidak boleh memasuki keadaan tidur dan boleh diperolehi oleh program mod pengguna atau kernel! Kunci boleh jadi: "dengan tamat masa" atau "Tiada masa tamat", kunci tamat masa akan dibuka secara automatik selepas tamat masa Jika tiada kunci atau tamat masa, kernel akan memulakan mekanisme tidur untuk memasuki tidur!
2 .pengenalan kunci wakelock
PowerManager.WakeLock mempunyai dua keadaan: dikunci dan dikunci adalah dua bentuk:
①Dikunci secara kekal Kunci jenis ini tidak akan dibuka kecuali dilepaskan secara eksplisit, jadi anda perlu berhati-hati apabila menggunakannya!
②Kunci tamat masa, ia akan dibuka kunci selepas masa tamat. Selepas mencipta WakeLock, terdapat dua mekanisme penguncian:①Mekanisme kunci tanpa mengira. , ② Kira mekanisme kunci (lalai) boleh ditentukan oleh setReferenceCounted(nilai boolean), perbezaannya ialah: Dalam yang pertama, tidak kira berapa kali peroleh( ), satu lepaskan( ) boleh membuka kunci. Yang terakhir memerlukan (--count == 0), dan ia juga akan digunakan untuk kunci apabila (count == 0) Oleh itu, mekanisme pengiraan WakeLock tidak benar-benar memohon/melepaskan kunci untuk setiap permintaan; Hanya kira bilangan kali kunci yang sama dipakai/dilepaskan, dan kemudian teruskan!
ps: Mengenai kandungan yang lebih mendalam, ia melibatkan kandungan asas Tahap pengarang adalah terhad dan saya belum mencapai tahap itu lagi. Saya tidak akan pergi ke penyelidikan mendalam di sini, hanya bercakap tentang beberapa asas Jika perlu pada masa akan datang, saya akan menulis artikel lain~
3 Cara menggunakan PowerManager >PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock w1 = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "MyTag");
w1.acquire();
//在这个过程,屏幕会保持光亮!
w1.release();
tanda bendera
pertama di atas newWakeLock( ), tanda ini menjejaskan bekalan kuasa sistem pada tahap yang berbeza-beza. Teg ini adalah eksklusif dan hanya satu daripadanya boleh ditentukan pada satu masa. PARTIAL_WAKE_LOCK: Pastikan CPU berjalan, lampu skrin dan papan kekunci mungkin dimatikan. SCREEN_DIM_WAKE_LOCK: Pastikan CPU berjalan, benarkan untuk mengekalkan paparan skrin tetapi mungkin kelabu, benarkan untuk mematikan lampu papan kekunci SCREEN_BRIGHT_WAKE_LOCK : pastikan CPU berjalan , benarkan untuk memastikan skrin diserlahkan, benarkan untuk mematikan lampu papan kekunci FULL_WAKE_LOCK: Pastikan CPU berjalan, pastikan skrin diserlahkan dan lampu papan kekunci juga mengekalkan kecerahan ps: Jika anda menggunakan wake lock separa (menggunakan bendera PARTIAL_WAKE_LOCK), CPU akan terus berjalan,
Mana-mana pemasa akan diabaikan, walaupun menekan butang kuasa. Dalam kes wake lock yang lain, CPU akan terus berjalan, tetapi pengguna akan tetap
Walau bagaimanapun, anda boleh menekan butang kuasa untuk meletakkan peranti tidur. Sebagai alternatif, anda boleh menggunakan lebih daripada dua penanda, tetapi ia hanya mempengaruhi tingkah laku skrin.
Jika digunakan bersama PARTIAL_WAKE_LOCK, ia tidak akan memberi kesan. Parameter buka kunci skrin: ACQUIRE_CAUSES_WAKEUP: Kunci bangun biasa sebenarnya tidak menghidupkan lampu. Sebaliknya, apabila dibuka ia akan sentiasa kekal
Mengekalkan (seperti aktiviti pengguna dalam kehidupan seterusnya). Apabila wakelock diperoleh, bendera ini menyebabkan skrin dan/atau papan kekunci dihidupkan serta-merta. Penggunaan biasa adalah untuk melihat pemberitahuan yang penting kepada pengguna dengan segera. ON_AFTER_RELEASE: Jika bendera ini ditetapkan, pemasa aktiviti pengguna akan ditetapkan semula apabila wakelock dilepaskan, menyebabkan pencahayaan
Berlangsung seketika. Jika anda gelung dalam keadaan wacklock, ini boleh digunakan untuk mengurangkan kelipan Untuk melaksanakan operasi kuasa, anda perlu menetapkannya. dalam AndroidManifest.xml Dinyatakan bahawa aplikasi mempunyai kebenaran untuk menetapkan pengurusan kuasa: Anda juga mungkin memerlukan: Selain itu, tetapan WakeLock adalah pada Tahap aktiviti , bukan untuk keseluruhan Permohonan Dipohon! Baiklah, bahagian ini memperkenalkan PowerManager (perkhidmatan kuasa), tetapi ia hanyalah sains popular, dan kandungannya turut disebut
Jangan gunakan kelas ini melainkan anda tiada pilihan~ Tidak kira anda faham atau tidak, ketahui sahaja! 4 Keizinan yang diperlukan
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER"/>
Ringkasan bahagian ini: