blob: 6cd64d29ddcb43641837e58bc7cca0e714b69f7f [file] [log] [blame]
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
&lt;boolean&gt;</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
&lt;UID&gt;</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
&lt;UID&gt;</code>
</dt>
<dd>
Membuang UID paket tertentu dari daftar putih untuk memblokir
penggunaan data berkuota di latar belakang saat Data Saver diaktifkan.
</dd>
</dl>