Trik Agar Aplikasi Tetap Berjalan Ketika Android Dalam Mode “Key Lock” / “Sleep”


Android Key Lock

Mungkin untuk para developer Android, pasti akan menemukan situasi dimana aplikasi yang dibuat tidak dapat berjalan ketika Android dalam situasi idle untuk waktu yang lama. Dalam rentang waktu tertentu, Android akan masuk ke mode Key Lock / Sleep yang ditandai dengan layar Android mati dan pengguna diharuskan untuk melepaskan key lock agar dapat menggunakan handphonenya kembali.

Nah, untuk aplikasi-aplikasi yang diharuskan untuk berjalan terus-menerus, seperti internet messenger, media player, atau lainnya, hal ini tentu akan sangat mengganggu. Karena ketika Android dalam mode key lock / sleep, CPU akan dinonaktifkan, sehingga program-program yang sedang berjalan otomatis akan terhenti sampai mode key lock / sleep dirubah kembali ke mode aktif. Gak lucu kan kalo misalnya apliksi yang dibuat sedang memainkan musik tiba-tiba terhenti atau tiba-tiba koneksi internet messenger terputus.

Untuk mengakalinya, salah satu caranya adalah dengan mengubah konfigurasi PowerManager di Android. Cek penjelasan official dari Google mengenai ini dengan mengklik link ini. Kita bisa mengeset flag yang digunakan untuk mengkonfigurasikan PowerManager sesuai dengan kebutuhan, berikut adalah daftar flag tersebut:

Flag CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright

Perlu diperhatikan bahwa penggunaan flag-flag tersebut harus hati-hati. Contohnya untuk flag FULL_WAKE_LOCK, jika diaktifkan maka Android tidak akan terus menerus berada di mode aktif, yaitu layar tidak akan redup / mati dan CPU terus berjalan hal ini tentu akan berakibat pada besarnya penggunaan resource baterai handphone. Menurut saya untuk kasus misalnya media player atau internet messenger, PARTIAL_KEY_LOCK adalah yang paling cocok untuk digunakan karena CPU tetap aktif sehingga aplikasi tetap bisa dijalankan namun layar dan keyboard tidak dapat digunakan.

Untuk menggunakan flag tersebut juga tidaklah rumit, cukup dengan beberapa baris kode sederhana di bawah ini:

[sourcecode language=”java”]
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”);
wl.acquire();
..layar akan tetap menyalan dalam seksi ini..
wl.release();
[/sourcecode]

Semoga artikel ini bisa membantu para developer Android yang dipusingkan dengan aplikasi yang tiba-tiba stop ketika Android dalam mode Key Lock / Sleep seperti saya hehe…