Bài viết được sự cho phép bởi tác giả Sơn Dương Các bài trước mình đã hướng dẫn các bạn sử dụng Sqlite và Realm database. Tuy nhiên, vẫn còn một giải pháp thao tác với database cũng rất hay ho khác. Đó chính là Room database trong Android. Vậy Room Database là gì? Cách sử dụng Room database như thế nào? Chúng ta sẽ cùng nhau tìm hiểu thông qua một dự án ví dụ nhé. #Giới thiệu Room database trong Android Room database được phát triển và cải tiến từ sqlite. Room database giúp đơn giản hoá việc code,và giảm thiểu các công đoạn liên quan đến cơ sở dữ liệu. Bản chất Room database là abstract layer gồm cơ sở dữ liệu chuẩn SQLite được Android thông qua. Với 3 thành phần chính là: Database, DAO (Data Access Object) và entity. Mỗi thành phần đều có nhiệm vụ và chức năng riêng. #Xây dựng ứng dụng sử dụng Room database trong Android 1. Cài đặt thư viện Đầu tiên các bạ [...]
Read more →Trong thế giới công nghệ hiện đại, việc phát triển ứng dụng di động đã trở thành một lĩnh vực hấp dẫn và đầy tiềm năng. Để xây dựng các ứng dụng chất lượng và hiệu quả, các developer cần sử dụng các công cụ phát triển phổ biến như Android Studio. Trong bài viết này, hãy cùng TopDev tìm hiểu về Android Studio là gì và tại sao nó quan trọng đối với các developer ứng dụng di động. Android Studio là gì? Android Studio là môi trường phát triển ứng dụng (IDE) chính thức và mạnh mẽ nhất để phát triển ứng dụng cho nền tảng Android. Được phát triển bởi Google, Android Studio cung cấp một bộ công cụ toàn diện, giúp các lập trình viên xây dựng, kiểm tra, debug và triển khai các ứng dụng Android chuyên nghiệp trên nhiều thiết bị di động khác nhau. Tầm quan trọng của Android Studio Trong thế giới phát triển nhanh chóng củ [...]
Read more →Trước mình làm dự án Javascript và Nodejs, mình phải làm việc rất nhiều với tư duy hướng sự kiện. Lúc đó mình cứ nghĩ rằng có lẽ kiểu lập trình hướng sự kiện này chỉ thích hợp trên web app, hay cụ thể là Javascript mà thôi. Với các ứng dụng Android, chúng ta đã quá quen thuộc với cách viết code tuần tự, hay còn gọi là lập trình đồng bộ. Giờ đây, với tư duy lập trình hướng sự kiện hay bất đồng bộ đó đã lan sang cả các dự án xây dựng ứng dụng Android. Không biết do mình cổ hủ, lạc hậu hay giờ người ta mới phổ biến thư viện này. Thư viện đó chính là RxJava, một thư viện để hỗ trợ việc viết ứng dụng Android theo kiểu hướng sự kiện. Nếu bạn đang có ý định tìm hiểu hoặc đã tìm hiểu trước đó rồi. Nhưng vẫn còn mơ hồ về RxJava thì bài viết này dành riêng cho bạn. Mình sẽ [...]
Read more →Android là một nền tảng hệ điều hành di động phổ biến được phát triển bởi Google. Nó chiếm hơn 80% thị phần hệ điều hành di động trên toàn thế giới. Với sự phát triển của công nghệ di động, việc lập trình ứng dụng Android ngày càng trở nên quan trọng và thu hút sự quan tâm của nhiều nhà phát triển. Hãy cùng TopDev tìm hiểu về lập trình Android bằng ngôn ngữ Java - một trong những ngôn ngữ lập trình phổ biến nhất hiện nay. Giới thiệu về lập trình Android bằng Java Java là một ngôn ngữ lập trình hướng đối tượng được sử dụng rộng rãi để phát triển các ứng dụng Android. Được phát triển bởi Sun Microsystems vào năm 1995, Java đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Với tính linh hoạt và khả năng tương thích cao, Java được sử dụng trong nhiề [...]
Read more →Khi các bạn cần phải kết nối các thành phần ứng dụng Android thì đều phải sử dụng Intent. Vậy Intent là gì? Vai trò và cách sử dụng như thế nào trong ứng dụng Android. Bài viết này mình hướng dẫn các bạn tìm hiểu bản chất cũng như cách sử dụng Intent trong android để có thể gửi dữ liệu giữa các thành phần (Activity, Service…) Trước khi vào bài viết mình chợt nghĩ đến ví dụ: Con người làm bất kể việc gì đều có mục đích cả. Từ xem TV, mua sắm, lập trình ứng dụng… đều có một số mục đích đằng sau nó. Android hoạt động theo cách tương tự. Trước khi một ứng dụng có thể thực hiện một hành động nào đó (Thuật ngữ gọi là action), nó cần phải biết trước mục đích của các hành động đó, để có thể thực hiện các action đó đúng cách. Hóa ra, con người và Android cũng không khác biệt chút [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Clean code Android là gì? Có lẽ bạn đã nghe quá nhiều các đàn anh đi trước nói: Em phải viết clean code thì mã nguồn mới dễ đọc, dễ mở rộng, dễ bảo trì… Nhưng bạn có biết clean code Android là thế nào không? Có phải cứ viết ngắn gọn là clean code? Với những người đang đọc bài viết này: Một là, bạn là một lập trình viên. Hai là, bạn muốn trở thành một lập trình viên giỏi. — Robert C. Martin Thử tưởng tượng bạn đang ở trong một thư viện sách. Bạn muốn tìm một cuốn sách nào đó. Nếu như thư viện được sắp xếp gọn gàng, phân loại sách tốt thì bạn sẽ dễ dàng tìm được cuốn mình cần. Ngoài ra, nếu như thư viện mà được thiết kế nội thất tối, bạn sẽ có hứng thú hơn khi đọc sách. Cũng giống như ví [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Trong bài viết này, mình sẽ chỉ cho bạn tại sao và khi nào sử dụng loại dữ liệu ArrayMap để tối ưu hóa hiệu suất ứng dụng Android một cách hiệu quả. Bất cứ khi nào bạn cần lưu trữ dữ liệu dạng Key => Value, có lẽ HashMap là kiểu dữ liệu đầu tiên bạn nghĩ tới phải không? Với cấu trúc dữ liệu kiểu HashMap khá là linh hoạt, sử dụng được ở mọi nơi mà chúng ta lại không cần bận tâm quá nhiều về những “tác dụng phụ” của nó. Nhưng bạn có để ý là mỗi khi sử dụng HashMap, Android Studio lại đưa ra gợi ý rằng bạn nên sử dụng ArrayMap để thay thế Hashmap. Bạn có biết tại sao không? Mình cũng không biết Vậy thì cùng nhau tìm hiểu nhé! Tối ưu hóa việc sử dụng ArrayMap và SparseArray Phần này, mình sẽ chỉ cho bạn [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Kotlin hiện đã trở thành ngôn ngữ chính để lập trình ứng dụng Android, bên cạnh Java đã có phần già nua. Khi mới chuyển sang sử dụng Kotlin, chắc chắn bạn sẽ có đôi chút bỡ ngỡ. Nhưng mình đảm bảo, càng về sau, bạn càng cảm thấy khoái “anh chàng” Kotlin này. Bài viết này, mình sẽ chia sẻ một số kinh nghiệm, kotlin tips trick để bạn viết code nhàn hơn, gọn gàng và nhanh hơn. Cài đặt Kotlin Hiện nay, bản Android Studio mới nhất đã tích hợp sẵn Kotlin, nên bạn không cần phải cài đặt thêm gì cả. Mình chỉ lưu ý một vài điểm ch dự án của bạn. Một là, để tạo mới một kotlin class, bạn chọn: File > New > Kotlin file/class Hoặc File > New > Kotlin activity Phần đuôi mở rộng của các tệp kotlin là .kt Hai là, Android Studio có một plugin hỗ trợ viết mã [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Bạn đã nghe rất nhiều người nói Android Jetpack, nhưng thực sự Android Jetpack là gì? Bài viết này chúng ta sẽ cùng nhau tìm hiểu về Android Jetpack nhé. #Android Jetpack là gì? Android Jetpack là một tập hợp các components, tools giúp bạn nhanh chóng tạo ra các ứng dụng Android tuyệt vời. Các components này kết hợp giữa Support Library và Architecture Components. Có thể phân loại Android Jetpack thành 4 thành phần chính: Foumdation components (Ví dụ: ktx, appcompat, multidex, test) Architecture components (Ví dụ: Data Binding, Lifecycles, ViewModel, Livedata, Room, Paging, Navigation, WorkManager) Behavior components (Ví dụ: Download manager, Media, Notifications, Permissions, Sharing, Slices) UI components (Ví dụ: Animations, Auto, Emoji, Fragment, Layout, Palette, TV, Wear OS ) #Ưu điểm của Android Jetpack 1. Tính “mở” Để hiểu kỹ hơn và trả lời câu hỏi Android Jetpack là gì? thì hãy xem xét: Các Android Jetpack components được cung cấp dưới dạng các thư viện “mở”, không phải là một phần của nền tảng Android cơ bản. Điều này [...]
Read more →Vào khoảng thời gian những năm 2010, cách đây hơn 10 năm, khi mà các thiết bị smartphone chạy hệ điều hành Android hay iOS chưa quá phổ biến, thì cũng là thời kỳ vàng son của các game Java trên điện thoại di động còn bàn phím số. Ngày nay với việc smartphone chạy các hệ điều hành chuyên biệt, không hỗ trợ cài đặt, chạy các ứng dụng viết bằng Java; thì để trải nghiệm lại những tựa game được xem là bầu trời tuổi thơ của thế hệ 8x, 9x chúng ta cần đến các ứng dụng giả lập Java trên smartphone. Bài viết hôm nay chúng ta cùng điểm qua một số các ứng dụng giả lập Java trên Android phổ biến hiện nay nhé. Giả lập Java là gì? Java là 1 ngôn ngữ lập trình bậc cao được phát triển bởi Sun Microsystems (hiện tại thuộc sở hữu của Oracle) từ những năm 1995. Java với sự đa năng của nó [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Trong bài hướng dẫn này, chúng ta sẽ tạo một ứng dụng theo dõi vị trí xe (Car Location Tracking) giống như Grab và Uber. Bài viết này mình sẽ sử dụng Firebase Real-time Database. Tài xế chỉ cần gửi vị trí hiện tại về firebase và khách hàng sẽ cập nhật được vị trí của lái xe trên Google Map. >>> Xem thêm: Firebase là gì? Mặc dù chúng ta sẽ không phát triển một ứng dụng hoàn thiện như Grab hay Uber. Nhưng mình sẽ hướng dẫn các bạn tự xây dựng một tính năng rất quan trọng đó là cập nhật thời gian thực, hiển thị thông tin tài xế trên ứng dụng khách hàng. Bài viết sẽ chia làm 2 phần: Phần 1: Xây dựng tính năng gửi location theo thời gian thực cho tài xế (dành cho tài xế). Phần 2: Xây dựng tính năng hiển thị [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Bài viết này mình sẽ hướng dẫn chi tiết các sử dụng AsyncTask trong Android, một cách làm rất được khuyến khích khi xử lý đa luồng trong Android. Mỗi ứng dụng Android khi sử dụng đều được hệ điều hành cấp cho một process, và trên đó có một thread mặc định. Đó là main UI thread. Android xử lý tất cả các sự kiện/tác vụ trên một thread duy nhất gọi là main UI thread. Main UI thread không xử lý các hoạt động đồng thời vì nó chỉ xử lý một sự kiện/task tại một thời điểm. Do vậy, nếu bạn thực hiện một tác vụ gì đó mà tốn nhiều thời gian trên main UI thread sẽ gây ra hiện tượng treo ứng dụng hay còn gọi là ANR (Application Not Responding). Để xử lý các tác vụ cần nhiều thời gian như: Tải file từ internet, nén hoặc giải nén… thì chúng ta phải tách [...]
Read more →Bài viết được sự cho phép của tác giả Sơn Dương Constants được sử dụng ở khắp mọi nơi trong hầu hết các dự án. Với dự án Android cũng vậy, chúng được sử dụng rất nhiều. Bạn có bao giờ tự hỏi liệu có thể làm cho Constants trở nên thông minh hơn chưa? Nghe có vẻ phi lý nhưng lại rất hợp lý Bài viết này mình sẽ hướng dẫn các bạn tạo Intelligent constants trong dự án Android nhé! #Thực hành tạo Intelligent Constants Chúng ta cùng xem xét một kịch bản là bạn muốn truyền một flag vào một hàm và thực hiện một việc gì đó dựa trên giá trị được truyền vào. Ví dụ: Mình có một hàm có 3 tham số. Tham số thứ nhất và thứ 2 là kiểu số (Integer), còn tham số thứ 3 là một Operation để thực hiện 2 tham số kia. Đại khái như sau: private int performOperation(int a, int b, <operation>) Bạn sẽ chọn kiểu dữ liệu nào cho [...]
Read more →Như các bạn nào đã từng trải qua cũng biết, App Icon nói chung là một chủ đề tưởng chừng như đơn giản, nhưng không. Khi nói về App Icon có nghĩa chúng ta đang nói về tất cả các icon có thể được dùng đến bên trong ứng dụng. Chúng có thể là các icon bạn nhìn thấy ở màn hình danh sách ứng dụng của thiết bị, nhấn vào sẽ mở một ứng dụng cụ thể. Chúng có thể là các icon của ứng dụng khi bạn vào Google Play. Hay khi bạn vào màn hình Settings và cũng sẽ thấy các icon của các ứng dụng ở đó. Cho đến các icon dùng bên trong ứng dụng như icon cho popup, cho button,… Nhưng bài viết hôm nay mình sẽ không nói hết tất cả các thể loại App Icon, kiến thức liên quan đến chúng sẽ dài lắm. Mà mình sẽ chỉ tập trung vào Launcher Icon, chính là icon xuất hiện ở màn hình danh sách ứng [...]
Read more →Bài viết được sự cho phép của tác giả Nhựt Danh Phải nói rằng thời buổi ngày nay lập trình thật sướng, đặc biệt là lập trình Android. Bởi vì chúng ta được cung cấp hàng tá các công cụ lập trình Android hữu dụng. Từ “chính chủ” của Google hay Android Studio, cho đến “chính khách” của các bác “hàng xóm” tốt bụng. Từ quản lý hiệu năng của ứng dụng, cho đến việc mang lại giao diện đẹp hơn… Cái khó trong việc này là làm sao để nhớ hết các công cụ đó, và cách sử dụng chúng hiệu quả nhất. Xuất phát từ nhu cầu đó. Mình bắt đầu tổng hợp các công cụ lập trình Android cần thiết này lại. Vì có khá nhiều công cụ nên mình dự định sẽ chia ra làm 3 phần. Trong đó phần hôm nay sẽ tổng hợp các công cụ cơ bản nhất mà bạn nhất thiết phải biế [...]
Read more →