Bagian pelajaran ini mengajarkan Anda cara
Selama penggunaan ponsel cerdas, biaya paket data seluler bisa saja melebihi harga perangkat itu sendiri. Dari Android 7.0 (API level 24), pengguna dapat mengaktifkan Penghemat Data pada seluruh perangkat untuk mengoptimalkan penggunaan data perangkat, dan menggunakan data yang lebih sedikit. Kemampuan ini khususnya berguna saat roaming, mendekati akhir siklus tagihan, atau untuk paket data prabayar kecil.
Bila pengguna mengaktifkan Penghemat Data di Settings dan perangkat berada dalam jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi tahu aplikasi untuk menghemat penggunaan data latar depan bila memungkinkan. Pengguna bisa memasukkan aplikasi tertentu ke daftar putih untuk memungkinkan penggunaan data berkuota bila Penghemat Data diaktifkan.
N Developer Preview memperluas ConnectivityManager
API untuk menyediakan cara pada aplikasi untuk menerima preferensi Penghemat Data
pengguna dan memantau perubahan
preferensi. Hal ini dianggap praktik terbaik bagi aplikasi untuk memeriksa apakah
pengguna telah mengaktifkan Penghemat Data dan berusaha membatasi penggunaan data latar depan dan
data latar belakang.
Memeriksa Preferensi Penghemat Data
Di N Developer Preview, aplikasi bisa menggunakan ConnectivityManager API untuk menentukan pembatasan penggunaan data
apa yang sedang diterapkan. Metode getRestrictBackgroundStatus()
akan mengembalikan salah satu dari nilai berikut:
-
RESTRICT_BACKGROUND_STATUS_DISABLED - Penghemat Data dinonaktifkan.
-
RESTRICT_BACKGROUND_STATUS_ENABLED - Pengguna telah mengaktifkan Penghemat Data untuk aplikasi ini. Aplikasi harus berusaha membatasi penggunaan data di latar depan dan dengan halus menangani pembatasan penggunaan data latar belakang.
-
RESTRICT_BACKGROUND_STATUS_WHITELISTED - Pengguna telah mengaktifkan Penghemat Data namun aplikasi telah dimasukkan dalam daftar putih. Aplikasi harus tetap berusaha membatasi penggunaan data latar belakang dan latar depan.
Hal ini dianggap praktik terbaik untuk membatasi penggunaan data bila perangkat
terhubung ke jaringan berkuota, meskipun Penghemat Data telah dinonaktifkan atau aplikasi
telah dimasukkan dalam daftar putih. Kode contoh berikut menggunakan ConnectivityManager.isActiveNetworkMetered() dan ConnectivityManager.getRestrictBackgroundStatus() untuk menentukan berapa banyak data
yang harus digunakan aplikasi:
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
// Checks if the device is on a metered network
if (connMgr.isActiveNetworkMetered()) {
// Checks user’s Data Saver settings.
switch (connMgr.getRestrictBackgroundStatus()) {
case RESTRICT_BACKGROUND_STATUS_ENABLED:
// Background data usage is blocked for this app. Wherever possible,
// the app should also use less data in the foreground.
case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
// The app is whitelisted. Wherever possible,
// the app should use less data in the foreground and background.
case RESTRICT_BACKGROUND_STATUS_DISABLED:
// Data Saver is disabled. Since the device is connected to a
// metered network, the app should use less data wherever possible.
}
} else {
// The device is not on a metered network.
// Use data as required to perform syncs, downloads, and updates.
}
Meminta izin daftar putih
Jika aplikasi Anda perlu menggunakan data di latar belakang, aplikasi bisa meminta izin
daftar putih dengan mengirim maksud
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
yang mengandung URI dari nama paket aplikasi Anda: misalnya,
package:MY_APP_ID.
Mengirim maksud dan URI akan membuka aplikasi Settings dan menampilkan setelan penggunaan data untuk aplikasi Anda. Pengguna nanti bisa memutuskan apakah akan mengaktifkan data latar belakang untuk aplikasi Anda. Sebelum Anda mengirim maksud ini, sebaiknya tanyakan kepada pengguna terlebih dahulu apakah mereka ingin membuka aplikasi Settings untuk keperluan mengaktifkan penggunaan data latar belakang.
Memantau Perubahan pada Preferensi Penghemat Data
Aplikasi bisa memantau perubahan pada preferensi Penghemat Data dengan membuat BroadcastReceiver untuk memantau ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED dan secara dinamis
mendaftarkan penerima dengan Context.registerReceiver(). Bila menerima siaran ini, aplikasi harus
memeriksa apakah preferensi Penghemat Data baru memengaruhi
izinnya dengan memanggil ConnectivityManager.getRestrictBackgroundStatus().
Catatan: Sistem hanya mengirim siaran ini ke aplikasi yang
secara dinamis mendaftar padanya dengan Context.registerReceiver() . Aplikasi
yang mendaftar untuk menerima siaran ini dalam manifes mereka
tidak akan menerimanya.
Menguji dengan Perintah Android Debug Bridge
Android Debug Bridge (ADB) menyediakan sedikit perintah yang Anda dapat gunakan untuk menguji aplikasi Anda dalam ketentuan Penghemat Data. Anda dapat mengonfigurasi izin konfigurasi jaringan atau menyetel jaringan nirkabel sesuai yang diukur untuk menguji aplikasi Anda di jaringan berbiaya tetap.
-
$ adb shell dumpsys netpolicy - Menghasilkan laporan berisi setelan pembatasan jaringan latar belakang global saat ini, UID paket saat ini di daftar putih, dan izin jaringan untuk paket yang diketahui lainnya.
-
$ adb shell cmd netpolicy - Menampilkan daftar lengkap dari perintah Network Policy Manager (netpolicy).
-
$ adb shell cmd netpolicy set restrict-background <boolean> -
Mengaktifkan atau menonaktifkan mode Penghemat Data saat meneruskan
trueataufalse, masing-masing. -
$ adb shell cmd netpolicy add restrict-background-whitelist <UID> - Menambahkan UID paket tertentu ke daftar putih untuk mengizinkan penggunaan data berkuota di latar belakang.
-
$ adb shell cmd netpolicy remove restrict-background-whitelist <UID> - Membuang UID paket tertentu dari daftar putih untuk memblokir penggunaan data berkuota di latar belakang saat Penghemat Data diaktifkan.
-
$ adb shell cmd netpolicy list wifi-networks - Membuat daftar semua jaringan wifi, menampilkan jika jaringan diukur.
-
$ adb shell cmd netpolicy set metered-network <WIFI_SSID> true - Menyetel wifi dengan SSID yang ditetapkan sesuai yang diukur sehingga memungkinkan Anda untuk menyimulasikan jaringan yang diukur pada jaringan berbiaya tetap.