Facebook for iPhone

Facebook for iPhone

Pernah merasa kalau baterai iPhone Anda cepat berkurang padahal hanya menjalankan aplikasi-aplikasi standar saja? Bisa jadi penyebabnya adalah aplikasi Facebook.

Menurut hasil pengujian yang dilakukan oleh Sebastian Düvel, yang kemudian dikonfirmasi oleh Demetrio Filocamo, aplikasi Facebook ternyata bisa menguras baterai iPhone Anda jauh lebih cepat dibandingkan aplikasi-aplikasi lainnya.

Bagaimana aplikasi Facebook bisa menguras baterai?

Secara umum, ketika Anda menjalankan sebuah aplikasi, aplikasi tersebut akan berjalan di foreground (aktif). Dan ketika Anda menekan tombol Home, aplikasi tersebut tidak dihentikan sepenuhnya tetapi akan dialihkan ke background dan kemudian disuspend (ditidurkan). Aplikasi yang disuspend ini tidak akan menggunakan CPU, tetapi masih tersimpan di memori. Ini adalah hal yang baik karena aplikasi akan lebih cepat dikembalikan atau dijalankan kembali dari kondisi suspend dibandingkan dengan harus dijalankan ulang dari awal.

Normalnya, jika aplikasi yang berjalan di background telah mencapai batas waktu 10 menit, maka aplikasi tersebut akan dipaksa oleh sistem untuk masuk ke mode Suspended.

Namun, ada beberapa jenis aplikasi yang punya ijin khusus untuk bisa berjalan lebih lama dari 10 menit di background (Long-Running Background Tasks) untuk dapat menyelesaikan tugas-tugasnya.

(Baca Multitasking pada iOS untuk penjelasan yang lebih jelas tentang proses multitasking pada iOS.)

Dua dari lima jenis aplikasi ini adalah aplikasi pemutar kontent audio/video, dan aplikasi VoIP.

  1. Aplikasi pemutar kontent audio/video (background audio) bisa tetap berjalan di background tanpa batas waktu selama konten audio/videonya dimainkan.
  2. Walaupun aplikasi VoIP bisa saja tersuspend, tetapi servicenya tetap berjalan di background untuk menerima panggilan masuk.

Facebook adalah aplikasi yang memiliki task/service yang masuk dalam dua jenis aplikasi tersebut. Facebook pada dasarnya adalah aplikasi VoIP karena mendukung panggilan masuk/keluar, tetapi kemudian masuk pada kategori Audio agar mendukung fitur VoIPnya (bisa menerima panggilan suara di background).

Most VoIP apps also need to be configured as background audio apps to deliver audio while in the background. Therefore, you should include both the audio and voip values to the UIBackgroundModes key. If you do not do this, your app cannot play audio while it is in the background.

Ini artinya, Facebook bisa saja aktif di background untuk waktu yang lama.

Dengan pengujian menggunakan program Instruments, diketahui bahwa Facebook ternyata bangkit dari Suspended ke Background setiap beberapa menit sekali selama 10 detik, lalu kemudian tersuspend kembali. Dan karena pada kondisi Background aplikasi akan menggunakan CPU kembali, maka proses Suspended-to-Background yang terjadi setiap beberapa menit ini dapat menguras energi.

Looking at the flags in Instruments you can see that the app is waking up every few minutes, does something for 10 second and sleeps again.

I let this run for two hours and as you can see in the rightmost column, the Facebook app is waking up at regular intervals, does something for almost exactly 10 seconds and sleeps again. The whole day long.

Instruments

Pemakaian CPU oleh aplikasi Facebook

Lalu bagaimana cara mengatasi perilaku yang tak diinginkan dari aplikai Facebook ini?

  1. Hapus aplikasi Facebook, Anda bisa mengakses Facebook dari Safari. Atau,
  2. Tutup aplikasi Facebook dari multitasking bar setiap kali Anda selesai menggunakannya.

Walaupun tidak disarankan untuk melakukan penutupan aplikasi secara manual dari multitasking bar, tetapi khusus untuk kasus aplikasi Facebook ini, tampaknya Anda harus menutupnya secara manual, karena aplikasi Facebook adalah salah satu aplikasi yang memiliki task atau service yang termasuk pada kategori “Long-Running Background Tasks”, di mana prosesnya di background akan berjalan tanpa batas waktu.

Sumber:
[Hagga_blog]

Referensi:
[iOS Developer Library]