1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
|
page.title=Perubahan Perilaku
page.keywords=preview,sdk,compatibility
meta.tags="preview", "kompatibilitas"
page.tags="preview", "developer preview"
page.image=images/cards/card-n-changes_2x.png
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Dalam dokumen ini</h2>
<ol>
<li><a href="#perf">Peningkatan Kinerja</a>
<ol>
<li><a href="#doze">Doze</a></li>
<li><a href="#bg-opt">Optimisasi Latar Belakang</a></li>
</ol>
</li>
<li><a href="#perm">Perubahan Izin</a></li>
<li><a href="#accessibility">Peningkatan Aksesibilitas</a>
<ol>
<li><a href="#screen-zoom">Zoom Layar</a></li>
<li><a href="#vision-settings">Vision Settings di Setup Wizard</a></li>
</ol>
</li>
<li><a href="#ndk">Menautkan Aplikasi NDK ke Pustaka Platform</a></li>
<li><a href="#afw">Android for Work</a></li>
</ol>
<h2>Lihat Juga</h2>
<ol>
<li><a href="{@docRoot}preview/api-overview.html">
Ikhtisar Android N API</a></li>
</ol>
</div>
</div>
<p>
Selain fitur dan kemampuan baru, Android N
juga menyertakan berbagai perubahan perilaku sistem dan API. Dokumen ini
menyoroti beberapa perubahan utama yang harus dipahami dan diperhitungkan
dalam aplikasi Anda.
</p>
<p>
Jika Anda sebelumnya telah mempublikasikan aplikasi untuk Android, ketahuilah bahwa aplikasi Anda
mungkin akan terpengaruh oleh perubahan dalam platform ini.
</p>
<h2 id="perf">Peningkatan Kinerja</h2>
<p>
Android N berisi perubahan perilaku sistem yang bertujuan meningkatkan daya tahan
baterai perangkat, penggunaan RAM, dan kinerja aplikasi. Perubahan-perubahan ini bisa memengaruhi
ketersediaan sumber daya sistem dan pemberitahuan sistem bagi aplikasi. Anda
harus meninjau perubahan ini dan mengevaluasi cara menyesuaikan aplikasi Anda terhadap perubahan
tersebut.
</p>
<h3 id="doze">Doze</h3>
<p>
Diperkenalkan dalam Android 6.0 (API level 23), Doze meningkatkan daya tahan baterai dengan
menangguhkan aktivitas CPU dan jaringan bila pengguna mencabut steker perangkat,
diam, dan layar dinonaktifkan. Android N
menyempurnakan Doze lebih jauh dengan menerapkan subset CPU dan pembatasan jaringan
bila perangkat dicabut stekernya dan layar dinonaktifkan, namun tidak harus
diam, misalnya, bila handset dibawa bepergian di saku pengguna.
</p>
<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
<p class="img-caption">
<strong>Gambar 1.</strong> Ilustrasi tentang cara Doze menerapkan pembatasan
aktivitas sistem tingkat pertama untuk meningkatkan daya tahan baterai.
</p>
<p>
Bila perangkat sedang menggunakan daya baterai, dan layar telah nonaktif selama jangka waktu
tertentu, perangkat akan memasuki Doze dan menerapkan pembatasan subset pertama: Perangkat
akan menutup akses jaringan aplikasi, serta menangguhkan pekerjaan dan sinkronisasi. Jika perangkat
sedang diam selama jangka waktu tertentu setelah memasuki Doze, sistem akan menerapkan pembatasan
Doze lainnya terhadap alarm {@link android.os.PowerManager.WakeLock},
{@link android.app.AlarmManager}, GPS, dan pemindaian Wi-Fi. Tidak peduli
apakah sebagian atau semua pembatasan Doze diterapkan, sistem akan membangunkan
perangkat selama jeda pemeliharaan singkat, dan selama itu aplikasi diizinkan
mengakses jaringan dan bisa mengeksekusi semua pekerjaan/sinkronisasi yang telah ditangguhkan.
</p>
<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
<p class="img-caption">
<strong>Gambar 2.</strong> Ilustrasi tentang cara Doze menerapkan pembatasan
aktivitas sistem tingkat kedua setelah perangkat diam selama jangka waktu tertentu.
</p>
<p>
Perhatikan, mengaktifkan layar atau memasang steker perangkat akan menyebabkan keluar dari Doze dan
menghilangkan pembatasan pemrosesan ini. Perilaku tambahan ini tidak
memengaruhi rekomendasi dan praktik terbaik dalam menyesuaikan aplikasi Anda dengan versi
Doze sebelumnya yang diperkenalkan dalam Android 6.0 (API level 23), seperti yang dibahas di
<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
Mengoptimalkan untuk Doze dan App Standby</a>. Anda tetap harus
mengikuti rekomendasi itu, seperti menggunakan Google Cloud Messaging (GCM) untuk
mengirim dan menerima pesan, dan mulai merencanakan pembaruan untuk mengakomodasi
perilaku Doze tambahan.
</p>
<h3 id="bg-opt">Project Svelte: Optimisasi Latar Belakang</h3>
<p>
Android N menghilangkan tiga siaran implisit untuk membantu mengoptimalkan
penggunaan memori dan konsumsi daya. Perubahan ini penting karena siaran
implisit sering memulai aplikasi yang telah didaftarkan untuk mendengarkannya di
latar belakang. Menghilangkan siaran ini bisa sangat menguntungkan kinerja perangkat dan pengalaman
pengguna.
</p>
<p>
Perangkat seluler sering mengalami perubahan konektivitas, seperti saat berpindah
antara Wi-Fi dan data seluler. Saat ini, aplikasi bisa memantau perubahan dalam
konektivitas dengan mendaftarkan suatu penerima untuk siaran implisit {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} dalam manifes
mereka. Karena banyak aplikasi yang didaftarkan untuk menerima siaran ini, switch
jaringan tunggal bisa menyebabkan semuanya aktif dan memproses siaran tersebut
secara bersamaan.
</p>
<p>
Demikian pula, aplikasi bisa mendaftar untuk menerima siaran implisit {@link
android.hardware.Camera#ACTION_NEW_PICTURE} dan {@link
android.hardware.Camera#ACTION_NEW_VIDEO} dari aplikasi lain, seperti
Kamera. Bila pengguna mengambil gambar dengan aplikasi Kamera, semua aplikasi ini akan aktif
untuk memproses siaran.
</p>
<p>
Untuk meminimalkan masalah ini, Android N menerapkan optimisasi
berikut:
</p>
<ul>
<li>Aplikasi yang menargetkan Android N tidak menerima siaran {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION}, sekalipun
memiliki entri manifes untuk meminta pemberitahuan mengenai kejadian ini. Aplikasi yang berjalan
di latar depan tetap bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread
utama jika meminta pemberitahuan dengan {@link
android.content.BroadcastReceiver}.
</li>
<li>Aplikasi tidak bisa mengirim atau menerima siaran {@link
android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Optimisasi ini
memengaruhi semua aplikasi, bukan hanya yang menargetkan Android N.
</li>
</ul>
<p>
Rilis Android mendatang mungkin akan menghilangkan siaran implisit tambahan,
juga layanan latar belakang tak terikat. Karena itu, Anda harus menghindari atau
menghilangkan dependensi terhadap penerima yang dideklarasikan manifes untuk siaran implisit,
serta layanan latar belakang.
</p>
<p>
Kerangka kerja Android menyediakan beberapa solusi untuk mengurangi kebutuhan akan
siaran implisit atau layanan latar belakang ini. Misalnya, {@link
android.app.job.JobScheduler} API menyediakan mekanisme yang tangguh untuk menjadwalkan
operasi jaringan bila syarat yang ditetapkan terpenuhi, misalnya koneksi ke suatu
jaringan berbiaya tetap. Anda bahkan bisa menggunakan {@link
android.app.job.JobScheduler} untuk bereaksi terhadap perubahan kepada penyedia konten.
</p>
<p>
Untuk informasi selengkapnya tentang perubahan perilaku ini dan cara menyesuaikan aplikasi Anda,
lihat <a href="{@docRoot}preview/features/background-optimization.html">Optimalisasi
Latar Belakang</a>.
</p>
<h2 id="perm">Perubahan Izin</h2>
<p>
Android N menyertakan perubahan pada izin yang bisa memengaruhi aplikasi Anda,
termasuk izin akun pengguna dan izin baru untuk menulis ke
penyimpanan eksternal. Inilah rangkuman izin-izin yang telah berubah dalam
preview:
</p>
<ul>
<li>{@code GET_ACCOUNTS} (Tidak digunakan lagi)
<p>
Izin GET_ACCOUNTS sekarang tidak digunakan lagi. Sistem mengabaikan izin ini
untuk aplikasi yang menargetkan Android N.
</p>
</li>
</ul>
<h2 id="accessibility">Peningkatan Aksesibilitas</h2>
<p>
Android N menyertakan perubahan yang bertujuan meningkatkan kegunaan
platform ini untuk pengguna dengan penglihatan yang kurang atau lemah. Perubahan ini secara umum tidak
akan mengharuskan perubahan kode dalam aplikasi Anda, akan tetapi Anda harus meninjau
fitur ini dan mengujinya dengan aplikasi Anda untuk menilai dampak potensial terhadap pengalaman
pengguna.
</p>
<h3 id="screen-zoom">Zoom Layar</h3>
<p>
Android N memungkinkan pengguna untuk mengatur <strong>Display size</strong> yang akan memperbesar
atau memperkecil semua elemen pada layar, sehingga meningkatkan aksesibilitas perangkat
bagi pengguna yang kurang melihat. Pengguna tidak bisa memperbesar layar melewati lebar layar
minimum <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
sw320dp</a>, yang merupakan lebar Nexus 4, yakni ponsel ukuran sedang pada umumnya.
</p>
<div class="cols">
<div class="col-6">
<img src="{@docRoot}preview/images/screen-zoom-1.png" alt="" height="XXX" id="figure1" />
</div>
<div class="col-6">
<img src="{@docRoot}preview/images/screen-zoom-2.png" alt="" height="XXX" id="figure1" />
</div>
</div> <!-- end cols -->
<p class="img-caption">
<strong>Gambar 3.</strong> Layar di sebelah kanan menampilkan efek
penambahan Display size perangkat yang menjalankan citra sistem Android N.
</p>
<p>
Bila densitas perangkat berubah, sistem akan memberi tahu aplikasi yang sedang berjalan dengan
cara berikut:
</p>
<ul>
<li>Jika aplikasi menargetkan API level 23 atau yang lebih rendah, sistem secara otomatis akan mematikan
semua proses latar belakang. Artinya, jika pengguna beralih dari
aplikasi tersebut untuk membuka layar <em>Settings</em> dan mengubah
pengaturan <strong>Display size</strong>, maka sistem akan mematikan aplikasi tersebut dengan cara yang
sama dengan saat memori tinggal sedikit. Jika aplikasi memiliki beberapa proses
latar depan, sistem akan memberi tahu proses tersebut mengenai perubahan konfigurasi seperti
dijelaskan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Runtime</a>, seolah-olah orientasi perangkat telah berubah.
</li>
<li>Jika sebuah aplikasi menargetkan Android N, semua prosesnya
(latar depan dan latar belakang) akan diberi tahu mengenai perubahan konfigurasi seperti
dijelaskan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Runtime</a>.
</li>
</ul>
<p>
Sebagian besar aplikasi tidak perlu melakukan perubahan untuk mendukung fitur ini, asalkan
aplikasi tersebut mengikuti praktik terbaik Android. Hal-hal tertentu yang harus diperiksa:
</p>
<ul>
<li>Uji aplikasi Anda pada perangkat dengan lebar layar <code><a href=
"{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
dan pastikan aplikasinya berjalan dengan semestinya.
</li>
<li>Bila konfigurasi perangkat berubah, perbarui informasi cache
yang bergantung pada densitas, seperti bitmap di cache atau sumber daya yang dimuat dari
jaringan. Periksa perubahan konfigurasi bila aplikasi melanjutkan dari status dihentikan
sementara.
<p class="note">
<strong>Catatan:</strong> Jika Anda menyimpan sementara data yang bergantung pada konfigurasi, ada
baiknya untuk menyertakan metadata yang relevan seperti ukuran layar
atau densitas piksel yang sesuai untuk data tersebut. Menyimpan metadata ini memungkinkan Anda untuk
memutuskan apakah Anda perlu memperbarui data cache setelah perubahan
konfigurasi.
</p>
</li>
<li>Hindari menetapkan dimensi dengan satuan px, karena satuan ini tidak diskalakan dengan
densitas layar. Sebagai gantinya, tetapkan dimensi dengan satuan <a href="{@docRoot}guide/practices/screens_support.html">piksel yang tidak bergantung densitas
</a> (<code>dp</code>).
</li>
</ul>
<h3 id="vision-settings">Vision Settings di Setup Wizard</h3>
<p>
Android N menyertakan Vision Settings pada layar Welcome, di mana pengguna bisa
menyiapkan pengaturan aksesibilitas berikut pada perangkat baru:
<strong>Magnification gesture</strong>, <strong>Font size</strong>,
<strong>Display size</strong> dan <strong>TalkBack</strong>. Perubahan ini
menambah visibilitas bug yang terkait dengan berbagai pengaturan layar. Untuk
menilai dampak dari fitur ini, Anda harus menguji aplikasi dengan mengaktifkan
pengaturan ini. Anda bisa menemukan pengaturan ini pada <strong>Settings >
Accessibility</strong>.
</p>
<h2 id="ndk">Menautkan Aplikasi NDK ke Pustaka Platform</h2>
<p>
Android N menyertakan perubahan namespace untuk mencegah pemuatan API non-publik.
Jika Anda menggunakan NDK, Anda hanya bisa menggunakan API publik dari platform
Android. Menggunakan API non-publik dalam rilis Android resmi berikutnya
bisa menyebabkan aplikasi mengalami crash.
</p>
<p>
Untuk memperingatkan Anda terhadap penggunaan API non-publik, aplikasi yang berjalan pada perangkat
Android N akan menghasilkan kesalahan output logcat bila sebuah aplikasi memanggil API non-publik.
Kesalahan ini juga ditampilkan pada layar perangkat berupa pesan untuk membantu
meningkatkan kesadaran akan situasi ini. Anda harus meninjau kode aplikasi untuk
menghilangkan penggunaan API platform non-publik dan secara saksama menguji aplikasi Anda menggunakan
perangkat preview atau emulator.
</p>
<p>
Jika aplikasi Anda bergantung pada pustaka platform, lihat dokumentasi NDK untuk
perbaikan tipikal guna menggantikan API privat umum dengan padanan API publik.
Anda mungkin juga menautkan ke pustaka platform tanpa menyadarinya,
terutama jika aplikasi Anda menggunakan pustaka yang merupakan bagian dari platform ini (seperti
<code>libpng</code>), namun bukan bagian dari NDK. Dalam hal ini, pastikan
APK Anda berisi semua file .so yang ingin ditautkan.
</p>
<p class="caution">
<strong>Peringatan:</strong> Beberapa pustaka pihak ketiga mungkin menautkan ke API
non-publik. Jika aplikasi Anda menggunakan pustaka ini, aplikasi Anda mungkin akan crash saat dijalankan
pada rilis resmi Android berikutnya.
</p>
<p>
Aplikasi tidak boleh bergantung pada atau menggunakan pustaka bawaan yang tidak disertakan dalam
NDK, karena bisa mengalami perubahan, atau dipindahkan dari satu rilis Android ke
rilis lainnya. Peralihan dari OpenSSL ke BoringSSL merupakan satu contoh dari perubahan semacam ini.
Selain itu, perbedaan perangkat juga bisa menawarkan tingkat kompatibilitas, karena
tidak ada persyaratan kompatibilitas bagi pustaka platform yang tidak disertakan
dalam NDK. Jika Anda harus mengakses pustaka non-NDK pada perangkat yang lebih lama, jadikan
pemuatan bergantung pada level API Android.
</p>
<p>
Untuk membantu Anda mendiagnosis tipe masalah ini ada beberapa contoh kesalahan Java dan NDK
yang mungkin Anda temui saat berusaha membangun aplikasi dengan Android N:
</p>
<p>Contoh kesalahan Java:</p>
<pre class="no-pretty-print">
java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libcutils.so"
is not accessible for the namespace "classloader-namespace"
</pre>
<p>Contoh kesalahan NDK:</p>
<pre class="no-pretty-print">
dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
</pre>
<p>
Inilah beberapa perbaikan tipikal untuk aplikasi yang mengalami tipe kesalahan ini:
</p>
<ul>
<li>Penggunaan getJavaVM dan getJNIEnv dari libandroid_runtime.so bisa diganti
dengan fungsi JNI standar:
<pre class="no-pretty-print">
AndroidRuntime::getJavaVM -> GetJavaVM from <jni.h>
AndroidRuntime::getJNIEnv -> JavaVM::GetEnv or
JavaVM::AttachCurrentThread from <jni.h>.
</pre>
</li>
<li>Penggunaan simbol {@code property_get} dari {@code libcutils.so} bisa
diganti dengan {@code __system_property_get} alternatif publik.
Caranya, gunakan {@code __system_property_get} dengan include berikut:
<pre>
#include <sys/system_properties.h>
</pre>
</li>
<li>Penggunaan simbol {@code SSL_ctrl} dari {@code libcrypto.so} harus
diganti dengan aplikasi versi lokal. Misalnya, Anda harus menautkan
{@code libcyrpto.a} secara statis dalam file {@code .so} atau menyertakan
{@code libcrypto.so} Anda sendiri secara dinamis dari BoringSSL atau OpenSSL dalam aplikasi Anda.
</li>
</ul>
<h2 id="afw">Android for Work</h2>
<p>
Android N berisi perubahan untuk aplikasi yang menargetkan Android for Work, termasuk
perubahan pada instalasi sertifikat, pengaturan ulang kata sandi, manajemen pengguna
tambahan, dan akses ke identifier perangkat. Jika Anda membangun aplikasi untuk
lingkungan Android for Work, Anda harus meninjau perubahan ini dan memodifikasi
aplikasi sebagaimana mestinya.
</p>
<ul>
<li>Anda harus menginstal penginstal sertifikat yang didelegasikan sebelum DPC bisa
mengaturnya. Untuk profil dan aplikasi pemilik perangkat yang menargetkan N SDK, Anda harus
menginstal penginstal sertifikat yang didelegasikan sebelum pengontrol kebijakan
perangkat (DPC) memanggil
<code>DevicePolicyManager.setCertInstallerPackage()</code>. Jika penginstal
belum diinstal, sistem akan melontarkan
<code>IllegalArgumentException</code>.
</li>
<li>Pembatasan pengaturan ulang kata sandi untuk admin perangkat sekarang diterapkan kepada pemilik
profil. Admin perangkat tidak bisa lagi menggunakan
<code>DevicePolicyManager.resetPassword()</code> untuk menghapus kata sandi atau mengubah
kata sandi yang sudah ditetapkan. Admin perangkat tetap bisa menetapkan kata sandi, namun hanya
bila perangkat belum memiliki kata sandi, PIN, atau pola.
</li>
<li>Pemilik perangkat dan profil bisa mengelola akun meskipun pembatasan
ditetapkan. Pemilik perangkat dan pemilik profil bisa memanggil Account Management API
sekalipun pembatasan pengguna <code>DISALLOW_MODIFY_ACCOUNTS</code> diberlakukan.
</li>
<li>Pemilik perangkat bisa mengelola pengguna tambahan dengan lebih mudah. bila perangkat
dijalankan dalam mode pemilik perangkat, pembatasan <code>DISALLOW_ADD_USER</code>
secara otomatis ditetapkan. Ini mencegah pengguna membuat pengguna tambahan yang
tidak terkelola. Selain itu, metode <code>CreateUser()</code> dan
<code>createAndInitial()</code> tidak digunakan lagi; metode
<code>DevicePolicyManager.createAndManageUser()</code> baru telah menggantikannya.
</li>
<li>Pemilik perangkat bisa mengakses identifier perangkat. Pemilik perangkat bisa mengakses
alamat MAC Wi-Fi dari sebuah perangkat, menggunakan
<code>DevicePolicyManagewr.getWifiMacAddress()</code>. Jika Wi-Fi belum pernah
diaktifkan pada perangkat tersebut, metode ini akan mengembalikan nilai {@code null}.
</li>
</ul>
<p>
Untuk informasi selengkapnya tentang perubahan pada Android for Work di Android N, lihat
<a href="{@docRoot}preview/features/afw.html">Pembaruan Android for Work</a>.
</p>
<h2 id="other">Poin penting lainnya</h2>
<ul>
<li>Bila aplikasi berjalan pada Android N, namun menargetkan level API yang lebih rendah,
dan pengguna mengubah ukuran tampilan, proses aplikasi akan dimatikan. Aplikasi
harus dapat menangani skenario ini dengan lancar. Jika tidak, maka akan terjadi crash
bila pengguna memulihkannya dari Recents.
<p>
Anda harus menguji aplikasi untuk memastikan
perilaku ini tidak terjadi.
Anda bisa melakukannya dengan menyebabkan suatu crash yang mirip
saat mematikan aplikasi secara manual melalui DDMS.
</p>
<p>
Aplikasi yang menargetkan N dan yang di atasnya tidak secara otomatis dimatikan saat perubahan densitas;
akan tetapi, aplikasi tersebut mungkin tetap merespons perubahan konfigurasi dengan buruk.
</p>
</li>
<li>
Aplikasi pada Android N harus mampu menangani perubahan konfigurasi dengan lancar,
dan tidak boleh mengalami crash pada start selanjutnya. Anda bisa memverifikasi perilaku aplikasi
dengan mengubah ukuran font (<strong>Setting</strong> >
<strong>Display</strong> > <strong>Font size</strong>), kemudian memulihkan
aplikasi dari Recents.
</li>
</ul>
|