Android Mastery by Dan Tech
Android Mastery by Dan Tech

Android Fundamentals: Thực hành viết code

Bài viết này cung cấp code sample thực hành để bạn có thể thao tác với các Android Fundamentals Components. Bài viết này cực kỳ quan trọng cho tất cả lập trình viên Android, yêu cầu học hiểu và thông thạo để có thể làm việc tốt trong tương lai.

Cài đặt & tạo dự án với Android Studio

Để tải Android Studio bạn vui lòng truy cập đường dẫn https://developer.android.com/studio sau đó chọn phiên bản Android Studio Stable cho hệ điều hành của mình

Sau khi cài mở Android Studio lên

Giao diện Android Studio khởi tạo dự án – Android Mastery by Dan Tech

Nhấn vào nút New Project, chọn No Activity, nhập tên dự án và chọn Finish.

Đặt tên dự án và chọn Finish – Android Mastery by Dan Tech

Sau khi đợi dự án load xong bạn sẽ có giao diện như thế này

Giao diện mở màn cho dự án Android – Android Mastery by Dan Tech

Mở file build.gradle trong module app để cài đặt ViewBinding, DataBinding

plugins {
    id("kotlin-kapt")
}

buildFeatures {
    viewBinding = true
    dataBinding = true
}

Tại sao khóa học này không sử dụng Compose mà vẫn còn dùng ViewBinding, DataBinding?

  • Hiện tại phỏng vấn Android ngoài thị trường vẫn đang dùng Android View rất nhiều.
  • Android View là cơ sở, nền tảng. Chỉ có thể học thêm Compose hoặc không học, chứ không thể bỏ qua Android View
  • Học tập cách thao tác với Android View trước; Viết Code ViewModel chuẩn hóa để có thể dễ dàng migrate từ View sang Compose trong tương lai.

Sử dụng Activity trong Android

Tạo MainActivity và file xml tương ứng thông qua menu trong Android Studio. Nhấn chọn MainActivityLauncher Activity (Launcher Activity là Activity chạy đầu tiên khi ta mở ứng dụng từ App Icon)

Lần lượt tạo 4 Activity tiếp theo tượng trưng cho 4 loại Launch Mode mà chúng ta sẽ Demo: Standard Activity, Single Top Activity, Single Task Activity, Single Instance Activity.

Lưu ý: Hãy setup Launch Mode cho các Activity này trong file AndroidManifest

Implement logic Start Activity bên trong từng Activity này bằng ViewBinding.

startActivity(Intent(this@MainActivity, StandardActivity::class.java)) // code để gọi khởi tạo một Activity trong Android

Sử dụng Service trong Android

Thực hành BackgroundService

  • Tạo class BackgroundService theo menu của Android Studio
  • Đặt log lần lượt trong các hàm: onCreate, onDestroy, onStartCommand
  • Hiện thực hàm onStartCommand để mô phỏng 1 tác vụ IO nặng
Mô phỏng Task nặng cần chạy trên Background Service
  • Hiện thực logic Start Service từ MainActivity
  • Demo gọi Start Service nhiều lần xà xem log
  • Hiện thực logic Stop Service từ Main Activity

Lưu ý của Background Service

Tham khảo tại Google Android Developer

  • Background Service sẽ bị stop khi kill ứng dụng. Buộc Engineer muốn khởi chạy lại Service này phải gọi manually 1 lần nữa trong source code.

Thực hành ForegroundService

Tạo class ForegroundService từ Menu của Android Studio

Khởi tạo ForegronudService từ menu của Android Studio – khóa học Android Mastery by Dan Tech

Truy cập file AndroidManifest và setup permission cần thiết để chạy Foreground Service.

Setup permission trong file AndroidManifest – Android Mastery by Dan Tech

Implement logic cần thiết để chạy một Foreground Service

Code phần logic của Foreground Service trong Kotlin – Android Mastery by Dan Tech

Start và Stop Foreground Service từ Activity

Code khởi chạy một Android Foreground Service – Android Mastery by Dan Tech

Một vài lưu ý của Foreground Service

Tham khảo tại Google Android Developer

  • Foreground Service sẽ tiếp tục chạy nếu chúng ta đóng ứng dụng.
  • Trường hợp đặc biệt khi hệ điều hành kill Foreground Service để sử dụng memory. Foreground Service sẽ tự động được Start lại sau đó khi có đủ tài nguyên.

Sử dụng Broadcast Receiver trong Android

Thực hành với Broadcast Receiver

Tạo Broadcast Receiver trong Android Studio, đặt tên là SimpleReceiver

Tạo class SimpleReceiver trong Android Studio – Android Mastery by Dan Tech

Đăng ký Intent Filter trong AndroidManifest

Đăng ký Intent Filter cho SimpleReceiver trong AndroidManifest – Android Mastery by Dan Tech

Demo Receiver khi Restart máy (Phần này bạn hãy chạy app lên máy và restart nhé)

Demo Local manual Broadcast Receiver

Code để đăng ký Local Broadcast, viết trong Activity – Android Mastery by Dan Tech
// thực thi gửi Broadcast Receiver trong các function của bạn
sendBroadcast(Intent(SimpleReceiver.SIMPLE_ACTION))

Sử dụng Content Provider trong Android

Dùng Content Provider để query SMS trong máy

Logic query SMS trong máy Android – khóa học Android Mastery by Dan Tech

Đăng ký permission đọc SMS

Đăng ký PERMISSION đọc SMS trong Android – khóa học Android Mastery by Dan Tech

Một số ghi chú khi quyết định sử dụng Content Provider

  • Mặc dù Content Provider dùng để ghi, đọc dữ liệu trong Android app. Nhưng ta không nhất thiết phải sử dụng Content Provider cho các công việc lưu trữ data. Một số giải pháp khác có thể liệt kê ra đây: Room Database, Jetpack DataStore, Level Database

Khi nào nên cân nhắc sử dụng Content Provider?

  • Khi cần truy cập vào dữ liệu của 1 ứng dụng khác: SMS, Gallery Ảnh, File, …
  • Khi muốn export data của ứng dụng ra ngoài để các ứng dụng khác có thể sử dụng được. Ví dụ: Chia sẻ thông tin đăng nhập, thông tin tracking giữa các app trong hệ sinh thái của Meta với nhau;

Trên đây là toàn bộ kiến thức về Android Fundamentals mà tất cả Android Dev đều cần phải biết. Hi vọng bạn sẽ học thật tốt!