Memanipulasi Penerima Siaran Sesuai Kebutuhan

Cara termudah memantau perubahan status perangkat adalah membuat BroadcastReceiver untuk setiap status yang Anda pantau dan mendaftarkannya masing-masing dalam manifes aplikasi. Kemudian dalam setiap penerima ini, Anda tinggal menjadwalkan kembali alarm berulang berdasarkan status perangkat saat ini.

Efek samping pendekatan ini adalah aplikasi akan membangunkan perangkat setiap kali penerima ini dipicu—sehingga berpotensi lebih sering daripada yang diperlukan.

Pendekatan yang lebih baik adalah menonaktifkan atau mengaktifkan penerima siaran saat waktu proses. Dengan demikian, Anda bisa menggunakan penerima yang Anda deklarasikan dalam manifes sebagai alarm pasif yang dipicu oleh kejadian sistem hanya bila diperlukan.

Beralih dan Menumpuk Penerima Perubahan Status untuk Meningkatkan Efisiensi

Anda bisa menggunakan PackageManager untuk beralih status setiap komponen yang didefinisikan dalam manifes, termasuk penerima siaran mana saja yang ingin diaktifkan atau dinonaktifkan seperti yang ditampilkan dalam cuplikan di bawah ini:

ComponentName receiver = new ComponentName(context, myReceiver.class);

PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver,
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP)

Dengan teknik ini, jika mengetahui bahwa konektivitas telah putus, Anda bisa menonaktifkan semua penerima kecuali penerima perubahan konektivitas. Sebaliknya, setelah terhubung, Anda bisa berhenti memantau perubahan konektivitas dan cukup memeriksa untuk mengetahui apakah Anda telah online tepat sebelum melakukan pembaruan dan menjadwalkan kembali alarm pembaruan berulang.

Anda dapat menggunakan teknik yang sama untuk menunda penyelesaian unduhan yang memerlukan bandwidth lebih tinggi. Cukup aktifkan penerima siaran yang memantau perubahan konektivitas dan memulai unduhan hanya setelah Anda terhubung ke Wi-Fi.