10 Kesalahan Paling Umum Yang Dilakukan Pengembang Android: Tutorial Pemrograman

Diterbitkan: 2022-03-11

Android. Apa yang tidak disukai dari platform ini? Gratis, dapat disesuaikan, berkembang pesat, dan tersedia tidak hanya di ponsel atau tablet Anda, tetapi juga di jam tangan pintar, TV, dan mobil Anda.

Dengan update Lollipop terbaru, pemrograman Android terus meningkat. Platform ini telah cukup matang sejak rilis AOSP awal, dan menetapkan standar ekspektasi pengguna yang cukup tinggi. Lihat betapa bagusnya pola desain Material yang baru!

Ada ribuan perangkat yang berbeda, dengan ukuran layar yang berbeda, arsitektur chip, konfigurasi perangkat keras, dan versi perangkat lunak. Sayangnya, segmentasi adalah harga yang harus dibayar untuk keterbukaan, dan ada ribuan cara aplikasi Anda bisa gagal pada perangkat yang berbeda, bahkan sebagai programmer Android tingkat lanjut.

Terlepas dari segmentasi yang begitu besar, sebagian besar bug sebenarnya diperkenalkan karena kesalahan logika. Bug ini mudah dicegah, selama kita memahami dasar-dasarnya dengan benar!

Berikut adalah tutorial pemrograman Android untuk mengatasi 10 kesalahan paling umum yang dilakukan pengembang Android.

Pelajari pemrograman Android di tingkat yang lebih tinggi dengan tutorial ini.

Kesalahan Umum #1: Mengembangkan untuk iOS

Untuk kesenangan saya, kesalahan Android ini jauh lebih jarang terjadi saat ini (sebagian karena klien mulai menyadari bahwa hari-hari ketika Apple menetapkan semua standar desain sudah lama berlalu). Tapi tetap saja, sesekali, kami melihat aplikasi yang merupakan tiruan iOS.

Jangan salah paham, saya bukan penginjil pemrograman Android! Saya menghormati setiap platform yang menggerakkan dunia seluler selangkah lebih maju. Tapi, ini tahun 2014 dan pengguna telah menggunakan Android cukup lama sekarang, dan mereka sudah terbiasa dengan platform tersebut. Mendorong standar desain iOS kepada mereka adalah strategi yang mengerikan!

Kecuali ada alasan yang sangat bagus untuk melanggar pedoman, jangan lakukan itu. (Google melakukan ini sepanjang waktu, tetapi tidak pernah dengan menyalin-menempel.)

Berikut adalah beberapa contoh paling umum dari kesalahan Android ini:

  1. Anda seharusnya tidak membuat tab statis, dan mereka tidak termasuk di bagian bawah (saya menunjuk Anda Instagram).
  2. Ikon pemberitahuan sistem tidak boleh berwarna.
  3. Ikon aplikasi tidak boleh ditempatkan di dalam persegi panjang bulat (kecuali itu logo Anda yang sebenarnya, misalnya facebook).
  4. Layar splash berlebihan di luar pengaturan/pengenalan awal. Jangan menggunakannya dalam skenario lain.
  5. Daftar tidak boleh memiliki tanda sisipan.

Ini hanyalah beberapa dari banyak hal kecil lainnya yang dapat merusak pengalaman pengguna.

Kesalahan Umum #2: Mengembangkan untuk Perangkat Android Anda

Kecuali Anda sedang membangun aplikasi kios/promo untuk satu tablet, kemungkinan aplikasi Android Anda tidak akan terlihat bagus di setiap perangkat. Berikut adalah beberapa tips pemrograman Android yang perlu diingat:

  • Piksel kepadatan-independen (dp) berbeda dari piksel normal (px).
  • Sumber daya dimasukkan beberapa kali untuk memperhitungkan kepadatan dan orientasi yang berbeda.
  • Sumber daya dapat digambar 9-patch direntangkan agar sesuai dengan layar.

Ada ribuan kemungkinan skenario, tetapi setelah beberapa saat Anda mengembangkan rasa untuk menutupi semuanya dengan beberapa kasus.

Anda tidak memiliki ribuan perangkat? Bukan masalah. Emulator Android sangat bagus dalam mereplikasi perangkat fisik. Lebih baik lagi, cobalah Genymotion, ini secepat kilat dan dilengkapi dengan banyak perangkat preset populer yang berbeda.

Juga, sudahkah Anda mencoba memutar perangkat Anda? Semua neraka bisa lepas…

Kesalahan Umum #3: Tidak Menggunakan Intent

Intent adalah salah satu komponen utama Android. Ini adalah cara untuk melewatkan data di antara berbagai bagian aplikasi atau, lebih baik lagi, berbagai aplikasi di sistem.

Katakanlah Anda memiliki aplikasi galeri yang dapat membagikan tautan unduhan ke beberapa gambar melalui SMS. Manakah dari dua opsi yang tampaknya lebih logis?

Pilihan 1:

  • Minta izin SEND_SMS.

     <uses-permission android:name="android.permission.SEND_SMS" />
  • Tulis kode Anda sendiri untuk mengirim SMS menggunakan SmsManager .
  • Jelaskan kepada pengguna Anda mengapa aplikasi galeri Anda memerlukan akses ke layanan yang membutuhkan biaya, dan mengapa mereka harus memberikan izin ini untuk menggunakan aplikasi Anda.

Pilihan 2:

  • Mulai Intent SMS dan biarkan aplikasi yang dirancang untuk SMS yang bekerja

     Intent sendIntent = new Intent(Intent.ACTION_VIEW); sendIntent.setData(Uri.parse("sms:" + telephoneNumber)); sendIntent.putExtra("sms_body", x); startActivity(sendIntent);

Jika Anda ragu, solusi terbaik adalah opsi 2!

Pendekatan ini dapat diterapkan pada hampir semua hal. Berbagi konten, mengambil gambar, merekam video, memilih kontak, menambahkan acara, membuka tautan dengan aplikasi asli, dll.

Kecuali ada alasan bagus untuk membuat implementasi khusus (mis., kamera yang menerapkan filter), selalu gunakan Intent untuk skenario ini. Ini akan menghemat banyak waktu pemrograman, dan menghapus AndroidManifest.xml dari izin yang tidak perlu.

Kesalahan Umum #4: Tidak Menggunakan Fragmen

Beberapa waktu lalu di Honeycomb, Android memperkenalkan konsep fragments . Anggap mereka sebagai blok bangunan terpisah dengan siklus hidup mereka sendiri (agak rumit) yang ada di dalam Aktivitas. Mereka banyak membantu dengan mengoptimalkan berbagai layar, mereka mudah dikelola oleh aktivitas induknya, dapat digunakan kembali, digabungkan, dan diposisikan sesuka hati.

Meluncurkan aktivitas terpisah untuk setiap layar aplikasi sangat tidak efisien, karena sistem akan mencoba menyimpannya dalam memori selama mungkin. Membunuh satu tidak akan membebaskan sumber daya yang digunakan oleh yang lain.

Tutorial pemrograman Android ini merekomendasikan penggunaan fragmen yang tepat untuk membuat aplikasi Anda lebih efisien.

Kecuali jika Anda ingin menggali lebih dalam ke inti Android dan membaca artikel ini, menganjurkan penggunaan fragmen, Anda harus menggunakan fragmen bila memungkinkan. Pada dasarnya dikatakan bahwa fragmen dan pemuat kursor memiliki tujuan yang baik, tetapi implementasinya buruk.

Kesalahan Umum #5: Memblokir Utas Utama

Utas utama memiliki satu tujuan: menjaga antarmuka pengguna tetap responsif.

Meskipun ilmu di balik pengukuran kecepatan bingkai yang dapat dilihat mata/otak kita rumit dan dipengaruhi oleh banyak faktor, aturan umumnya adalah bahwa apa pun di bawah 24 fps dengan penundaan lebih dari 100 ms tidak akan dianggap mulus.

Ini berarti bahwa tindakan pengguna akan memiliki umpan balik yang tertunda, dan aplikasi Android yang telah Anda program akan berhenti merespons. Melucuti pengguna dari kendalinya atas aplikasi menyebabkan frustrasi, pengguna yang frustrasi cenderung memberikan umpan balik yang sangat negatif.

Lebih buruk lagi, jika utas utama diblokir untuk sementara (5 detik untuk Aktivitas, 10 untuk Penerima Siaran), ANR akan terjadi.

Saat Anda mempelajari pemrograman Android, Anda akan mengetahui dan takut akan pesan ini. Ikuti tips pemrograman Android ini untuk meminimalkan kejadian ini.

Ini sangat umum di Android 2.x, sehingga pada versi yang lebih baru, sistem tidak mengizinkan Anda melakukan panggilan jaringan di utas utama.

Untuk menghindari pemblokiran utas utama, selalu gunakan utas pekerja/latar belakang untuk: 1. panggilan jaringan 2. pemuatan bitmap 3. pemrosesan gambar 4. kueri basis data 5. Pembacaan / penulisan SD

Kesalahan Umum #6: Menemukan Kembali Roda

“Oke, saya tidak akan menggunakan utas utama. Saya akan menulis kode saya sendiri yang berkomunikasi dengan server saya di utas latar belakang.”

Tidak! Tolong jangan lakukan itu! Panggilan jaringan, pemuatan gambar, akses database, penguraian JSON, dan login sosial adalah hal paling umum yang Anda lakukan di aplikasi Anda. Bukan hanya milik Anda, setiap aplikasi di luar sana. Ada cara yang lebih baik. Ingat bagaimana Android telah matang dan berkembang sebagai platform? Berikut daftar singkat contoh:

  1. Gunakan gradle sebagai sistem build.
  2. Gunakan Retrofit / Volley untuk panggilan jaringan.
  3. Gunakan Picasso untuk memuat gambar.
  4. Gunakan Gson / Jackson untuk penguraian JSON.
  5. Gunakan implementasi umum untuk login sosial.

Jika Anda membutuhkan sesuatu yang diimplementasikan, kemungkinan itu sudah ditulis, diuji, dan digunakan secara luas. Lakukan riset dasar dan baca beberapa tutorial pemrograman Android sebelum menulis kode Anda sendiri!

Kesalahan Umum #7: Tidak Menganggap Sukses

Besar. Kami telah mempelajari bahwa ada cara yang lebih baik untuk menangani tugas yang berjalan lama, dan kami menggunakan pustaka yang terdokumentasi dengan baik untuk tujuan itu. Tetapi pengguna masih harus menunggu. Itu tak terelakkan. Paket tidak dikirim, diproses, dan diterima secara instan. Ada penundaan perjalanan pulang pergi, ada kegagalan jaringan, paket hilang, dan mimpi hancur.

Tapi semua ini terukur. Panggilan jaringan yang berhasil jauh lebih mungkin daripada yang tidak berhasil. Jadi mengapa menunggu respons server sebelum menangani permintaan yang berhasil? Jauh lebih baik untuk mengasumsikan kesuksesan dan menangani kegagalan. Jadi, ketika pengguna menyukai kiriman, jumlah suka segera meningkat, dan jika panggilan gagal, pengguna akan diberi tahu.

Di dunia modern ini, umpan balik segera diharapkan. Orang tidak suka menunggu. Anak-anak tidak ingin duduk di kelas untuk mendapatkan pengetahuan yang tidak pasti hasilnya di masa depan. Aplikasi harus mengakomodasi psikologi pengguna.

Kesalahan Umum #8: Tidak Memahami Bitmap

Pengguna menyukai konten! Terutama ketika konten diformat dengan baik dan terlihat bagus. Gambar, misalnya, adalah konten yang sangat bagus, terutama karena sifatnya yang menyampaikan seribu kata per gambar. Mereka juga menghabiskan banyak memori. Banyak memori!

Sebelum gambar ditampilkan di layar, gambar harus dimuat ke dalam memori. Karena bitmap adalah cara paling umum untuk melakukan ini, kami akan memberikan panduan pemrograman Android untuk keseluruhan proses:

Katakanlah Anda ingin menampilkan gambar di layar yang baru saja Anda ambil dengan kamera Anda. Total memori yang dibutuhkan untuk ini dihitung dengan rumus berikut: memory_needed_in_bytes = 4 * image_width * image_height;

Mengapa 4? Nah, konfigurasi bitmap yang paling umum/direkomendasikan adalah ARGB_8888 . Itu berarti bahwa untuk setiap piksel yang kita gambar, kita perlu menyimpan 8 bit (1 byte) untuk saluran alfa, merah, keserakahan dan biru dalam memori, untuk menampilkannya dengan benar. Ada alternatif, seperti konfigurasi RGB_565 yang membutuhkan setengah memori daripada ARGB_8888 , tetapi kehilangan transparansi dan ketepatan warna (sementara mungkin menambahkan warna hijau).

Anggap saja Anda memiliki perangkat baru dengan layar full HD dan kamera 12 MP. Gambar yang baru saja Anda ambil berukuran 4000x3000 piksel dan total memori yang diperlukan untuk menampilkannya adalah: 4 bytes * 4000 * 3000 = 48 MB

48 megabyte RAM Anda hanya untuk satu gambar!? Itu banyak!

Sekarang mari kita pertimbangkan resolusi layar. Anda mencoba menampilkan gambar 4000x3000 pada layar yang memiliki 1920x1080 piksel, dalam skenario terburuk (menampilkan gambar layar penuh) Anda tidak boleh mengalokasikan lebih dari 4 * 1920 * 1080 = 8.3 MB memori.

Selalu ikuti tips pemrograman Android untuk menampilkan bitmap secara efisien:

  1. Ukur tampilan tempat Anda menampilkan gambar.
  2. Skala / potong gambar besar yang sesuai.
  3. Tampilkan hanya apa yang bisa ditampilkan.

Kesalahan Umum #9: Menggunakan Hirarki Tampilan Dalam

Tata letak memiliki presentasi XML di Android. Untuk menggambar konten, XML perlu diurai, layar perlu diukur, dan semua elemen harus ditempatkan dengan tepat. Ini adalah proses yang memakan sumber daya dan waktu yang perlu dioptimalkan.

Beginilah cara kerja ListView (dan baru-baru ini RecyclerView).

Jika tata letak telah meningkat sekali, sistem akan menggunakannya kembali. Tapi tetap saja, menggembungkan tata letak harus terjadi di beberapa titik.

Katakanlah Anda ingin membuat kotak 3x3 dengan gambar. Salah satu cara untuk melakukannya adalah LinearLayout vertikal yang berisi 3 LinearLayout s dengan bobot yang sama, masing-masing berisi 3 ImageViews dengan bobot yang sama.

Beberapa pemula pemrograman Android tidak selalu memanfaatkan LinearLayouts dengan sebaik-baiknya.

Apa yang kita dapatkan dengan pendekatan ini? Peringatan bahwa "bobot bersarang buruk untuk kinerja".

Ada pepatah di dunia pemrograman Android, yang baru saja saya buat: “Dengan sedikit usaha, semua hierarki dapat diratakan” .

Dalam hal ini RelativeLayout atau GridLayout akan secara efisien menggantikan LinearLayouts bersarang.

Kesalahan Umum #10: Tidak Menyetel minSdkVersion ke 14

Yah, ini bukan kesalahan, tetapi ini adalah praktik yang buruk.

Android 2.x adalah tonggak besar dalam mengembangkan platform ini, tetapi beberapa hal harus ditinggalkan. Mendukung perangkat yang lebih tua menambah lebih banyak kerumitan untuk pemeliharaan kode dan membatasi proses pengembangan.

Angkanya jelas, pengguna telah pindah, pengembang tidak boleh ketinggalan.

Saya sadar bahwa ini tidak berlaku untuk beberapa pasar besar dengan perangkat lama (mis. India), dan menyetel minSdkVersion ke 14, di Aplikasi Facebook, berarti meninggalkan beberapa juta pengguna tanpa jejaring sosial favorit mereka. Namun, jika Anda baru memulai dan mencoba menciptakan pengalaman yang indah bagi pengguna Anda, pertimbangkan untuk menghilangkan masa lalu. Pengguna yang tidak memiliki sumber daya, atau merasa perlu meningkatkan perangkat/OS mereka, tidak akan memiliki insentif untuk mencoba versi superior aplikasi Android Anda dan pada akhirnya menghabiskan uang untuk itu.

Bungkus

Android adalah platform yang kuat yang berkembang dengan cepat. Mungkin tidak masuk akal untuk mengharapkan pengguna mengikuti langkahnya, tetapi sangat penting bagi pengembang Android untuk melakukannya.

Mengetahui bahwa Android tidak hanya ada di ponsel atau tablet kita bahkan lebih penting. Itu ada di pergelangan tangan kita, di ruang keluarga kita, di dapur kita, dan di mobil kita. Mendapatkan dasar-dasar yang benar adalah yang paling penting sebelum kita mulai berkembang.