Những lỗi phổ biến của lập trình viên Android

Android là một nền tảng được nhiều người ưa thích, vừa miễn phí vừa dễ tùy biến nên đã nhanh chóng phát triển và có mặt trên nhiều loại thiết bị như điện thoại, máy tính bảng, đồng hồ thông minh, tivi, ô tô.

Sau sự ra mắt của AOSP và bản update Lollipop, Android đã mang lại cho người dùng khá nhiều kì vọng. Phong cách thiết kế Material hứa hẹn đem lại trải nghiệm tốt hơn.

Có cả ngàn thiết bị Android khác nhau kích thước màn hình, chip xử lý, cấu hình phần cứng và phiên bản phần mềm. Sự đa dạng ấy dẫn tới việc ứng dụng Android mà bạn viết có thể không hoạt động được trên các thiết bị khác nhau cho dù bạn có là một lập trình viên Android già dặn.

Bỏ qua sự khác biệt kia, phần lớn lỗi mọi người biết đến lại là lỗi logic. Những lỗi này có thể dễ dàng xử lý nếu chúng ta làm đúng từ những điều cơ bản.

Dưới đây là danh sách những lỗi thường thấy mà các lập trình viên Android tạo ra.

hoc-lap-trinh-android

  1. Cố gắng bắt chiếc giao diện iOS

Thật may là hiện nay lỗi này đã trở nên ít phổ biến hơn (một phần vì khách hàng đã nhận ra rằng Apple đã thiết lập những tiêu chuẩn thiết kế từ lâu rồi). Nhưng dù có thế thì chúng ta vẫn đang và sẽ tiếp tục thấy những ứng dụng sao chép lại từ iOS.

Người dùng Android đã quen thuộc với nền tảng này, việc cố gắng nhồi nhét các chuẩn thiết kế của iOS vào sẽ rất tồi tệ. Nếu bạn không có lí do cực kì đáng giá nào để phá vỡ các nguyên tắc thì đừng làm thế.

Đây là một số ví dụ phổ biến cho lỗi này:

– Bạn không nên tạo các tab cố định mà chúng không ở phía dưới (ví dụ: Instagram).

– Các Icon thông báo hệ thống không nên màu mè

– Icon của ứng dụng không nên có khung viền chữ nhật bo góc (trừ khi logo của bạn vốn đã có nó, ví dụ như Facebook)

– Màn hình load ứng dụng (splash screen) chỉ nên dùng khi thiết lập lần đầu hoặc giới thiệu, không nền dùng trong các trường hợp khác.

– Danh sách không nên có đánh dấu…

  1. Chỉ lập trình và thử trên đúng thiết bị Android bạn có

Trừ khi bạn muốn tạo ra một ứng dụng phổ biến cho riêng loại thiết bị nào đó, nếu không thì ứng dụng của bạn có thể sẽ trông khá tệ trên các thiết bị khác. Bạn nên lưu ý các vấn đề sau:

– Density-independent pixels (dp) khác với pixel (px).

– Resources được thêm nhiều lần vào tài khoản đối với mật độ và định hướng khác nhau.

– 9-patch drawables sẽ được kéo dãn cho khít với màn hình.

Chắc chắn  bạn không có cả ngàn thiết bị để thử, Android Emulator sẽ giúp giả lập gần đúng cấu hình thiết bị bạn muốn thử. Android Emulator có thể chọn được kích thước màn hình, bộ nhớ, chức năng cảm biến…. Còn nếu bạn muốn một trình giả lập tốt hơn nữa, hãy thử Genymotion, emulator chạy nhanh và có nhiều cài đặt giả lập phổ biến cho các thiết bị.

Còn một vấn đề nữa, bạn có thử xoay ngang dọc điện thoại  hoặc emulator khi chạy thử ứng dụng chưa? Bạn sẽ thấy ngay rất nhiều lỗi giao diện phải sửa.

  1. Không dùng Intent

Intent là một trong những thành phần chủ chốt của Android. Nó là một cách để truyền dữ liệu giữa các phần của một ứng dụng hoặc hơn thế nữa, giữa các ứng dụng khác nhau trong một hệ thống.

  1. Không dùng Fragments

Một thời gian trước trên Honeycomb, Android giới thiệu khái niệm Fragments. Bạn có thể xem nó như là các khối được xây dựng riêng biệt với vòng đời riêng trong một Activity. Nó hỗ trợ rất nhiều trong việc tối ưu cho các loại màn hình, đồng thời dễ dàng được quản lý bởi activity cha, có thể sử dụng lại, kết hợp và bố trí theo ý muốn.

Chạy từng activity riêng cho mỗi màn hình ứng dụng sẽ có hiệu quả rất tệ khi hệ thống phải cố lưu trữ chúng trong bộ nhớ lâu hết mức có thể. Tắt một cái trong số đó cũng không giải phóng các tài nguyên được sử dụng bởi những cái còn lại.

Nếu bạn không muốn đào sâu nghiên cứu về core Android hay phản đối việc sử dụng fragment thì bạn nên dùng fragments bất cứ khi nào có thể. Cơ bản thì fragments và cursor loaders có mục đích tốt nhưng cách thực hiện thì khá thô.

  1. Tự code lại những thứ người khác đã làm

Một số bạn muốn tự code phần giao tiếp với server trong một background thread, đó chưa chắc là một lựa chọn tốt. Gọi network, nạp ảnh, truy cập cơ sở dữ liệu, parse JSON hay đăng nhập mạng xã hội, đó là những thứ ứng dụng của bạn thường xuyên làm nhất. Không chỉ ứng dụng của bạn mà tất cả các ứng dụng khác cũng thế. Vậy viết lại làm gì? Hãy nhớ là Android đã phát triển thành một nền tảng ổn định và có nhiều thư viện có sẵn hỗ trợ cho bạn.

  1. Blocking Main Thread (tác vụ chạy lâu cản trở luồng thực thi chính)

Main thread (luống chính) có một mục đích duy nhất: phản hồi tương tác của người dùng và cập nhật giao diện.

Mặc dù theo các phương pháp đo đếm một cách khoa học về tốc độ khung hình (frame rate) thì mắt/não của chúng ta có khả năng cảm nhận rất phức tạp và chịu ảnh hưởng của nhiều yếu tố nhưng có một nguyên tắc chung là cứ cái gì dưới 24 fps (khung hình/giây) với độ trễ trên 100ms thì được coi là không mượt mà.

Có nghĩa là hành vi của người dùng sẽ có một khoảng trễ và ứng dụng Android mà bạn lập trình sẽ dừng việc phản hồi lại. Bỏ qua yếu tố cách sử dụng của người dùng dẫn tới ứng dụng chạy không như ý, người dùng của bạn chỉ cần thấy ứng dụng không chạy như họ muốn là sẽ có các nhận xét tiêu cực.

Để tránh bị lỗi này, tốt nhất là bạn luôn sử dụng worker/background thread cho các trường hợp sau: gọi network (network call), nạp hình ảnh (bitmap loading), xử lý ảnh (image processing), truy vấn dữ liệu (database querying), đọc/ghi vào thẻ nhớ (SD reading/writing).

Những lỗi phổ biến của lập trình viên Android
5 (100%) 10 votes

Add Comment