Android (Jetpack Compose)
Đây là gì
Hãy hình dung việc mô tả cho một nhà thiết kế nội thất về căn phòng đã hoàn thiện ("một chiếc ghế sofa màu xanh dương đặt dưới cửa sổ") thay vì tự tay di chuyển từng món đồ nội thất, từng bước một. Jetpack Compose hoạt động theo cách tương tự. Đây là bộ công cụ UI (User Interface — Giao diện Người dùng, phần hiển thị trên màn hình của ứng dụng) khai báo (declarative) hiện đại của Android. Thay vì định nghĩa bố cục trong một tệp markup riêng rồi chỉnh sửa chúng thông qua các tham chiếu, bạn viết các hàm Kotlin "có thể kết hợp" (composable) mô tả giao diện sẽ trông như thế nào ứng với một trạng thái cho trước, và sẽ tự vẽ lại màn hình mỗi khi trạng thái đó thay đổi. Đây hiện là cách mà Google khuyến nghị để xây dựng giao diện Android gốc (native). Nó hoạt động song song với các thư viện Jetpack rộng hơn dành cho điều hướng (navigation), vòng đời (lifecycle), và dữ liệu.
Điểm mạnh
- Khai báo và thuần Kotlin — giao diện và logic cùng nằm trong một ngôn ngữ, không có tệp bố cục XML.
- Việc vẽ lại (recomposition) dựa trên trạng thái giúp màn hình luôn đồng bộ một cách tự động.
- Ít mã lặp (boilerplate) hơn so với hệ thống View cũ; các khối xây dựng (building blocks) mạnh mẽ và có thể kết hợp.
- Có sẵn các thành phần Material Design, theming, hoạt ảnh (animation), và khả năng tiếp cận (accessibility).
- Tương tác được với mã dựa trên View hiện có, nên có thể áp dụng dần dần.
Đánh đổi
- Hành vi recomposition có thể khá tinh vi; đặt sai vị trí trạng thái sẽ gây ra việc vẽ lại thừa hoặc lỗi.
- Cần một bộ công cụ Android tương đối mới và một thiết lập SDK (Software Development Kit — bộ công cụ và thư viện dùng để xây dựng ứng dụng) tối thiểu.
- Mô hình tư duy khác với cách tiếp cận mệnh lệnh (imperative) cũ, nên sẽ có một đường cong học tập.
- Một số thư viện chỉ hỗ trợ View đã trưởng thành vẫn cần các lớp bọc (wrapper) để tương tác.
Phù hợp nhất cho
Jetpack Compose là lựa chọn đúng đắn cho các ứng dụng Android gốc mới, nơi bạn muốn một codebase hiện đại, dễ bảo trì và lặp nhanh. Nó kết hợp tự nhiên với Kotlin và coroutines.
Mức độ phù hợp với vibe coding
Compose phù hợp với phát triển có sự hỗ trợ của AI vì các composable là các hàm nhỏ, thuần túy (pure functions) của trạng thái — dễ tạo ra, xem trước (preview), và kiểm chứng một cách độc lập. Hãy yêu cầu trợ lý AI đưa trạng thái ra khỏi các composable (truyền giá trị xuống dưới, sự kiện đi lên trên), giữ cho mỗi composable tập trung vào một việc, và điều khiển danh sách từ dữ liệu bất biến (immutable). Chú thích @Preview cho phép bạn quan sát giao diện được tạo ra bằng mắt thường mà không cần chạy toàn bộ ứng dụng, giúp rút ngắn vòng lặp phản hồi.
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Column {
Text("Count: $count")
Button(onClick = { count++ }) { Text("Add") }
}
}