page.title=Data Saver metaDescription=Optimalisasi penggunaan data yang diaktifkan pengguna. page.keywords="android N", "data usage", "metered network" page.image=images/cards/card-nyc_2x.jpg @jd:body <div id="qv-wrapper"> <div id="qv"> <h2> Dalam dokumen ini </h2> <ol> <li> <a href="#status">Memeriksa Preferensi Data Saver</a> <ol> <li> <a href="#request-whitelist">Meminta izin daftar putih</a> </li> </ol> </li> <li> <a href="#monitor-changes">Memantau Perubahan pada Preferensi Data Saver</a> </li> <li> <a href="#testing">Menguji dengan Perintah Android Debug Bridge</a> </li> </ol> </div> </div> <p> Selama penggunaan ponsel cerdas, biaya paket data seluler bisa saja melebihi harga perangkat itu sendiri. Di N Developer Preview, pengguna bisa mengaktifkan Data Saver berdasarkan lingkup perangkat untuk menghemat data, baik saat roaming, mendekati akhir siklus penagihan, atau pada paket data prabayar kecil. </p> <p> Bila pengguna mengaktifkan Data Saver di <strong>Settings</strong> 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 Data Saver diaktifkan. </p> <p> N Developer Preview memperluas {@link android.net.ConnectivityManager} API untuk menyediakan cara pada aplikasi untuk <a href="#status">menerima preferensi Data Saver pengguna</a> dan <a href="#monitor-changes">memantau perubahan preferensi</a>. Hal ini dianggap praktik terbaik bagi aplikasi untuk memeriksa apakah pengguna telah mengaktifkan DataSaver dan berusaha membatasi penggunaan data latar depan dan data latar belakang. </p> <h2 id="status"> Memeriksa Preferensi Data Saver </h2> <p> Di N Developer Preview, aplikasi bisa menggunakan {@link android.net.ConnectivityManager} API untuk menentukan pembatasan penggunaan data apa yang sedang diterapkan. Metode {@code getRestrictBackgroundStatus()} akan mengembalikan salah satu dari nilai berikut: </p> <dl> <dt> {@code RESTRICT_BACKGROUND_STATUS_DISABLED} </dt> <dd> Data Saver dinonaktifkan. </dd> <dt> {@code RESTRICT_BACKGROUND_STATUS_ENABLED} </dt> <dd> Pengguna telah mengaktifkan Data Saver untuk aplikasi ini. Aplikasi harus berusaha membatasi penggunaan data di latar depan dan dengan halus menangani pembatasan penggunaan data latar belakang. </dd> <dt> {@code RESTRICT_BACKGROUND_STATUS_WHITELISTED} </dt> <dd> Pengguna telah mengaktifkan Data Saver namun aplikasi telah dimasukkan dalam daftar putih. Aplikasi harus tetap berusaha membatasi penggunaan data latar belakang dan latar depan. </dd> </dl> <p> Hal ini dianggap praktik terbaik untuk membatasi penggunaan data bila perangkat terhubung ke jaringan berkuota, meskipun Data Saver telah dinonaktifkan atau aplikasi telah dimasukkan dalam daftar putih. Kode contoh berikut menggunakan {@link android.net.ConnectivityManager#isActiveNetworkMetered ConnectivityManager.isActiveNetworkMetered()} dan {@code ConnectivityManager.getRestrictBackgroundStatus()} untuk menentukan berapa banyak data yang harus digunakan aplikasi: </p> <pre> 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. } </pre> <h3 id="request-whitelist"> Meminta izin daftar putih </h3> <p> Jika aplikasi Anda perlu menggunakan data di latar belakang, aplikasi bisa meminta izin daftar putih dengan mengirim <code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code> yang mengandung URI dari nama paket aplikasi Anda: misalnya, <code>package:MY_APP_ID</code>. </p> <p> Mengirim intent dan URI akan membuka aplikasi <strong>Settings</strong> dan menampilkan setelan penggunaan data untuk aplikasi Anda. Pengguna nanti bisa memutuskan apakah akan mengaktifkan data latar belakang untuk aplikasi Anda. Sebelum Anda mengirim intent ini, sebaiknya tanyakan kepada pengguna terlebih dahulu apakah mereka ingin membuka aplikasi <strong>Settings</strong> untuk keperluan mengaktifkan penggunaan data latar belakang. </p> <h2 id="monitor-changes"> Memantau Perubahan pada Preferensi Data Saver </h2> <p> Aplikasi bisa memantau perubahan pada preferensi Data Saver dengan membuat {@link android.content.BroadcastReceiver} untuk memantau {@code ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} dan secara dinamis mendaftarkan penerima pada {@link android.content.Context#registerReceiver Context.registerReceiver()}. Bila menerima siaran ini, aplikasi harus <a href="#status">memeriksa apakah preferensi Data Saver baru memengaruhi izinnya</a> dengan memanggil {@code ConnectivityManager.getRestrictBackgroundStatus()}. </p> <p class="note"> <strong>Catatan:</strong> Sistem hanya mengirim siaran ini ke aplikasi yang secara dinamis mendaftar padanya dengan {@link android.content.Context#registerReceiver Context.registerReceiver()}. Aplikasi yang mendaftar untuk menerima siaran ini dalam manifes mereka tidak akan menerimanya. </p> <h2 id="testing"> Menguji dengan Perintah Android Debug Bridge </h2> <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> menyediakan beberapa perintah yang bisa Anda gunakan untuk memeriksa dan mengonfigurasi izin jaringan: <dl> <dt> <code>$ adb shell dumpsys netpolicy</code> </dt> <dd> 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. </dd> <dt> <code>$ adb shell cmd netpolicy</code> </dt> <dd> Menampilkan daftar lengkap dari perintah Network Policy Manager (netpolicy). </dd> <dt> <code>$ adb shell cmd netpolicy set restrict-background <boolean></code> </dt> <dd> Mengaktifkan atau menonaktifkan mode Data Saver saat meneruskan <code>true</code> atau <code>false</code>, masing-masing. </dd> <dt> <code>$ adb shell cmd netpolicy add restrict-background-whitelist <UID></code> </dt> <dd> Menambahkan UID paket tertentu ke daftar putih untuk mengizinkan penggunaan data berkuota di latar belakang. </dd> <dt> <code>$ adb shell cmd netpolicy remove restrict-background-whitelist <UID></code> </dt> <dd> Membuang UID paket tertentu dari daftar putih untuk memblokir penggunaan data berkuota di latar belakang saat Data Saver diaktifkan. </dd> </dl>