Tổng quan về giáo trình

Giáo trình Phát triển ứng dụng cho thiết bị di động là tài liệu học tập chính khóa do tập thể giảng viên Khoa Công nghệ Thông tin – Trường Đại học Công nghiệp Hà Nội biên soạn, được Nhà xuất bản Thống kê ấn hành năm 2022. Công trình do Thạc sĩ Nguyễn Bá Nghiễn làm chủ biên, cùng sự tham gia biên soạn của các đồng tác giả: Thạc sĩ Nguyễn Thái Cường, Thạc sĩ Vũ Thị Dương và Thạc sĩ Nguyễn Văn Tỉnh. Về mặt vị trí trong chương trình đào tạo, tài liệu được thiết kế phục vụ cho học phần chuyên ngành về công nghệ phần mềm và phát triển ứng dụng di động dành cho sinh viên bậc đại học ngành Công nghệ Thông tin.

Mục tiêu học tập của giáo trình hướng tới việc trang bị cho người học hệ thống lý thuyết nền tảng cùng kỹ năng thực hành xây dựng phần mềm trên hệ điều hành Android bằng ngôn ngữ lập trình Java. Sau khi hoàn thành nội dung học tập, sinh viên đạt được các chuẩn đầu ra cụ thể: phân tích được kiến trúc phân tầng của hệ điều hành Android; làm chủ quy trình phát triển dự án trên môi trường tích hợp Android Studio; thiết lập và điều khiển vòng đời của các thành phần giao diện; thiết kế bố cục giao diện người dùng bằng tệp định dạng XML; quản trị dữ liệu cục bộ thông qua hệ thống tệp SharedPreferences, cơ sở dữ liệu quan hệ SQLite và cơ chế chia sẻ Content Provider; đồng thời kết nối, đồng bộ dữ liệu thời gian thực với nền tảng đám mây Firebase.

Cấu trúc giáo trình gồm 5 chương được tổ chức theo tiến trình phát triển phần mềm chuẩn mực: từ thiết lập môi trường, nắm bắt kiến trúc thành phần, xây dựng giao diện tương tác, quản trị dữ liệu nội bộ đến mở rộng dịch vụ đám mây. Điểm đặc thù của tài liệu là việc kết hợp chặt chẽ giữa mô hình lý thuyết hệ điều hành (như cơ chế quản lý tiến trình của Linux Kernel, máy ảo tối ưu hóa Dalvik Virtual Machine) với các ca thực hành lập trình chi tiết, đi kèm bảng tra cứu thông số kỹ thuật và hệ thống lược đồ trạng thái chuẩn hóa.


Nội dung kiến thức cốt lõi

Các chương và chủ đề chính

Nội dung giáo trình được triển khai qua 5 chương chuyên đề với cấu trúc logic từ tầng hệ thống đến tầng ứng dụng:

  • Chương 1: Tổng quan về lập trình di động trên Android (ThS. Nguyễn Thái Cường biên soạn): Trình bày lịch sử hình thành hệ điều hành Android từ khi thành lập Tổng công ty Android đến khi Google mua lại vào năm 2005; phân tích ưu điểm (mã nguồn mở, đa nhiệm, kho ứng dụng Google Play) và nhược điểm (phân mảnh phiên bản, nguy cơ bảo mật); mô tả kiến trúc phân tầng gồm 5 lớp; giới thiệu môi trường Android Studio dựa trên nền tảng IntelliJ IDEA, hệ thống biên dịch Gradle-based build system, công cụ phân tích tĩnh Lint, công cụ tối ưu mã nguồn ProGuard; quy trình thiết lập trình giả lập Android Virtual Device (AVD) với công nghệ tăng tốc phần cứng Intel HAXM và xây dựng dự án mẫu đầu tiên hiển thị thông điệp "Hello World" trên Empty Activity với mức hỗ trợ Minimum SDK 26.
  • Chương 2: Các khái niệm cơ bản trong lập trình di động (ThS. Vũ Thị Dương biên soạn): Tập trung vào 4 khối thành phần cấu trúc của ứng dụng Android bao gồm Activity, Service, Broadcast Receiver, Content Provider và thông điệp không đồng bộ Intent; vai trò tệp khai báo cấu hình hệ thống AndroidManifest.xml; cơ chế quản lý giao diện thông qua cấu trúc ngăn xếp Back Stack theo nguyên lý vào sau - ra trước (LIFO); phân tích chi tiết 7 phương thức callback trong vòng đời Activity (onCreate, onStart, onResume, onPause, onStop, onDestroy, onRestart) cùng 3 trạng thái tồn tại (tiếp tục/chạy, tạm dừng, dừng); phương pháp lưu trữ trạng thái giao diện bằng sự kiện onSaveInstanceState() kết hợp lớp dữ liệu Bundle và cơ chế lưu trữ lâu dài với SharedPreferences (lớp Editor, chế độ truy cập MODE_PRIVATE); khái niệm phân mảnh giao diện Fragment, cơ chế nhúng tĩnh/động và 11 phương thức điều khiển vòng đời Fragment từ phiên bản API 11.
  • Chương 3: Xử lý giao diện người dùng (ThS. Nguyễn Văn Tỉnh biên soạn): Khảo sát cấu trúc phân cấp cây View và ViewGroup; phương pháp khai báo bố cục XML; phân tích các dạng layout cơ bản gồm LinearLayout, RelativeLayout và layout dạng bộ nạp AdapterView (ListView, GridView); cách dùng các phần tử điều khiển chuyên biệt như RadioButton, RadioGroup, TimePicker, DatePicker; cấu hình thanh ứng dụng/thanh hành động (Action Bar); tạo lập trình đơn chính (Option Menu) và trình đơn ngữ cảnh (Context Menu); hiển thị hộp thoại cảnh báo Dialog; cơ chế xử lý tương tác qua nạp chồng hàm callback của Activity hoặc đăng ký bộ lắng nghe sự kiện (Listener) cho từng View cụ thể.
  • Chương 4: Giao tiếp và lưu trữ dữ liệu (ThS. Nguyễn Bá Nghiễn biên soạn): Phân loại và triển khai Intent tường minh (Explicit Intent) phục vụ chuyển đổi màn hình và Intent không tường minh (Implicit Intent) cùng bộ lọc Intent Filter để kích hoạt chức năng hệ thống; cơ chế đóng gói và truyền tham số dữ liệu giữa các Activity; xây dựng hệ thống cơ sở dữ liệu quan hệ cục bộ SQLite thông qua hai lớp dẫn xuất cốt lõi là SQLiteOpenHelper và SQLiteDatabase (thực hiện truy vấn bảng dữ liệu danh bạ tblcontacts); cơ chế chia sẻ và truy xuất dữ liệu an toàn xuyên tiến trình thông qua Trình cung cấp nội dung (Content Provider).
  • Chương 5: Kết hợp Firebase với Android (ThS. Nguyễn Thái Cường biên soạn): Tổng quan về dịch vụ cơ sở dữ liệu thời gian thực (Realtime Database) hoạt động trên nền tảng điện toán đám mây của Google; quy trình tạo lập project trên hệ thống Firebase Console; tích hợp thư viện google-services vào tập tin cấu hình Gradle trong Android Studio; kỹ thuật cấu hình quyền truy cập và triển khai các hàm đọc, ghi dữ liệu đồng bộ thời gian thực từ ứng dụng di động lên máy chủ đám mây.

Kiến thức nền tảng được xây dựng

Giáo trình hình thành cho sinh viên hệ thống kiến thức khoa học máy tính thông qua các cơ chế đặc thù của hệ điều hành di động:

  • Lý thuyết hệ điều hành đa người dùng: Android kế thừa nhân Linux, gán cho mỗi ứng dụng một mã định danh người dùng duy nhất (Linux User ID - UID). Mỗi ứng dụng vận hành trong một tiến trình độc lập, được phân chia không gian máy ảo Dalvik (DVM) riêng biệt nhằm triệt để thực thi nguyên tắc đặc quyền tối thiểu (Principle of Least Privilege).
  • Mô hình điều hướng ngăn xếp LIFO: Hoạt động điều hướng giữa các màn hình ứng dụng được chuẩn hóa qua cấu trúc dữ liệu ngăn xếp (Back Stack). Activity mới kích hoạt sẽ được đẩy lên đỉnh ngăn xếp, trong khi thao tác bấm phím quay lại (Back) sẽ loại bỏ Activity hiện hành và phục hồi Activity liền kề phía dưới.
  • Mô hình lưu trữ dữ liệu quan hệ và phân tán: Sinh viên tiếp cận kiến trúc lưu trữ có cấu trúc ngoại tuyến bằng ngôn ngữ truy vấn SQL trên SQLite, đồng thời tiếp thu kiến trúc đồng bộ dữ liệu thời gian thực phi quan hệ trên nền tảng đám mây.

Kỹ năng phát triển

Thông qua các bài tập và ví dụ tổng hợp, sinh viên được rèn luyện toàn diện các nhóm năng lực thực tiễn:

  • Kỹ năng kỹ thuật (Technical skills): Cài đặt và cấu hình công cụ Android Studio, quản lý thiết bị ảo AVD, thiết lập kết nối gỡ lỗi với thiết bị vật lý qua giao thức USB Debugging; viết mã nguồn Java chuẩn hướng đối tượng; biên soạn tệp XML định nghĩa giao diện người dùng và tệp kê khai AndroidManifest.xml; cấu hình tệp kịch bản biên dịch build.gradle để tích hợp thư viện bên ngoài.
  • Kỹ năng phân tích (Analytical skills): Phân tích và nắm bắt vòng đời của tiến trình để thực hiện giải phóng tài nguyên mạng, ngắt kết nối cơ sở dữ liệu khi Activity chuyển sang trạng thái dừng (onPause, onStop), tránh hiện tượng rò rỉ bộ nhớ (memory leak); lựa chọn đúng kiểu bố cục XML (LinearLayout đối với bố cục thẳng hàng hoặc RelativeLayout đối với mối quan hệ vị trí tương đối) nhằm tối ưu hóa độ sâu của cây phân cấp giao diện.
  • Kỹ năng thực thi thực tế (Practical competencies): Triển khai hoàn chỉnh ứng dụng có khả năng quản lý trạng thái khi xoay màn hình; thao tác các lệnh đọc/ghi CSDL ngoại tuyến và đồng bộ trực tuyến; đóng gói ứng dụng thành tệp cài đặt APK có chữ ký số để sẵn sàng phát hành.

Phương pháp giảng dạy và học tập

Giáo trình triển khai phương pháp tiếp cận sư phạm đi từ cơ sở lý thuyết kiến trúc đến mô hình hóa quy trình và kết thúc bằng bài tập lập trình hoàn chỉnh. Mỗi chương đều tuân thủ bố cục sư phạm nhất quán: Tóm tắt chương, Mục tiêu đầu ra, Nội dung lý thuyết chi tiết kết hợp bảng biểu tra cứu, Ví dụ mẫu có mã nguồn đối chiếu và hệ thống Câu hỏi/Bài tập củng cố.

Về thực hành và nghiên cứu tình huống (case studies), giáo trình xây dựng các dự án mẫu gắn liền với từng đơn vị kiến thức:

  • Dự án Hello World (Chương 1): Hướng dẫn chi tiết từng thao tác trên giao diện Android Studio từ bước chọn mẫu Empty Activity, cấu hình Package name, Minimum SDK đến thực thi trên trình giả lập.
  • Bài toán vòng đời và lưu trữ dữ liệu 3 Activity (Chương 2): Xây dựng MainActivity liên kết điều hướng tới SubActivity1 và SubActivity2. Trong đó, SubActivity1 tiếp nhận dữ liệu nhập liệu gồm Tên (editTen) và Tuổi (editTuoi), thực thi phương thức ghi đè onSaveInstanceState() để lưu tạm vào đối tượng Bundle và phương thức onPause() để lưu lâu dài vào tệp Mydata.xml bằng đối tượng Editor của SharedPreferences. SubActivity2 minh họa cách thức áp dụng giao diện nổi dạng hộp thoại thông qua thuộc tính khai báo android:theme="@style/Theme.Dialog".
  • Bài toán quản lý hiển thị và cơ sở dữ liệu (Chương 3 và 4): Ứng dụng danh sách công việc trong tuần JobInWeek bằng thành phần ListView, bài toán giao tiếp hai số hạng và ứng dụng quản lý danh bạ với bảng CSDL tblcontacts thao tác qua lớp trợ giúp SQLiteOpenHelper.

Phương pháp đánh giá học phần được thiết kế dựa trên năng lực giải quyết bài toán kỹ thuật: kiểm tra khả năng cấu hình môi trường, kỹ năng phân tích lỗi thông qua hệ thống giám sát bộ nhớ/CPU, tính chính xác trong việc xử lý sự kiện giao diện và mức độ toàn vẹn của dữ liệu khi chuyển đổi trạng thái ứng dụng.

Để tự học đạt hiệu quả cao, sinh viên được chỉ dẫn tuân thủ các bước: chuẩn bị phần cứng máy tính đáp ứng cấu hình khuyến nghị (bộ nhớ trong RAM tối thiểu 8GB, ưu tiên ổ cứng SSD, kích hoạt tính năng ảo hóa CPU trong BIOS); thực hiện tuần tự việc thiết kế giao diện bằng XML trước khi viết mã xử lý nghiệp vụ bằng Java; tra cứu chính xác bảng phương thức hỗ trợ (như bảng các hàm putXX/getXX của Bundle hay các phương thức của lớp Editor) để triển khai mã nguồn đồng bộ.


Điểm nổi bật và cập nhật

Giáo trình ghi nhận các điểm cập nhật công nghệ quan trọng trong lập trình ứng dụng Android tính đến thời điểm xuất bản:

  • Chuyển đổi hoàn toàn sang hệ thống Gradle Build: Giáo trình phân tích rõ việc thay thế hệ thống biên dịch Ant cũ (từng dùng trên môi trường Eclipse ADT) bằng hệ thống Gradle tích hợp trong Android Studio. Thay đổi này cho phép quản lý phụ thuộc thư viện linh hoạt, tách biệt mã nguồn và tài nguyên, hỗ trợ tạo nhiều biến thể ứng dụng (build variants) và đóng gói các tệp APK độc lập mà không cần can thiệp cấu trúc mã nguồn lõi.
  • Tích hợp công cụ phân tích tĩnh Lint và bảo vệ mã nguồn ProGuard: Giới thiệu công cụ Lint nhằm tự động rà soát các vấn đề liên quan đến hiệu suất thực thi, tính khả dụng và khả năng tương thích giữa các phiên bản hệ điều hành; kết hợp công cụ ProGuard giúp thu gọn kích thước và làm mờ mã nguồn phục vụ công tác ký số ứng dụng (app-signing).
  • Mở rộng kiến trúc đám mây Firebase Realtime Database: Khác với các giáo trình lập trình di động truyền thống chỉ dừng lại ở lưu trữ tệp nội bộ và cơ sở dữ liệu SQLite ngoại tuyến, giáo trình dành riêng Chương 5 để hướng dẫn tích hợp dịch vụ cơ sở dữ liệu đám mây thời gian thực của Google, phản ánh xu hướng phát triển ứng dụng di động hiện đại kết nối trực tuyến.
  • Chuẩn hóa thiết kế giao diện dạng mô-đun với Fragment: Tài liệu hệ thống hóa việc sử dụng Fragment (tính năng từ API mức 11 trở lên), hướng dẫn phương pháp chia nhỏ giao diện thành các phần độc lập có vòng đời riêng để tối ưu hóa khả năng tái sử dụng mã nguồn trên nhiều chủng loại thiết bị có kích thước màn hình khác nhau như điện thoại và máy tính bảng.
  • Tài liệu hóa trực quan thông số kỹ thuật: Toàn bộ các bảng phương thức (phương thức đọc/ghi dữ liệu của Bundle, phương thức của lớp Editor, các hàm khởi tạo của SQLiteOpenHelper, đối số phương thức query() tương ứng mệnh đề SELECT trong SQL) đều được lập bảng biểu chi tiết, giúp người học dễ dàng đối chiếu trong quá trình viết mã.

Đối tượng sử dụng giáo trình

Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể trong hệ thống giáo dục đại học và nghiên cứu kỹ thuật:

  • Sinh viên đại học chuyên ngành: Tài liệu được thiết kế làm giáo trình chính cho sinh viên năm thứ ba và năm thứ tư thuộc các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin và Mạng máy tính. Sinh viên sử dụng tài liệu để học tập trực tiếp trên lớp và hoàn thành các bài tập lớn, đồ án môn học liên quan đến lập trình thiết bị di động.
  • Điều kiện tiên quyết về kiến thức (Prerequisites): Để tiếp thu nội dung giáo trình một cách thuận lợi, người học cần có kiến thức nền tảng vững vàng về Lập trình hướng đối tượng (đặc biệt là cú pháp và kỹ thuật lập trình Java), hiểu biết về cấu trúc dữ liệu và giải thuật, nguyên lý hệ điều hành (khái niệm tiến trình, luồng, quản lý bộ nhớ) và kiến thức về cơ sở dữ liệu quan hệ (đặc biệt là ngôn ngữ truy vấn cấu trúc SQL).
  • Giảng viên chuyên ngành: Giảng viên các trường đại học, cao đẳng kỹ thuật có thể sử dụng cuốn sách làm đề cương bài giảng lý thuyết chuẩn mực và tài liệu hướng dẫn thực hành trong phòng lab máy tính. Hệ thống bài tập mẫu và lược đồ trong sách cung cấp khung bài tập định lượng phục vụ việc kiểm tra, đánh giá kết quả học tập của người học.
  • Người học tự nghiên cứu và kỹ sư phần mềm: Cuốn sách là tài liệu tham khảo kỹ thuật cho các kỹ sư phần mềm muốn chuyển dịch kỹ năng từ phát triển web hoặc hệ thống sang lập trình Android Native, cung cấp kiến thức nền tảng về bản chất hoạt động bên dưới của hệ điều hành di động.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với đối tượng người học nào?

Giáo trình được biên soạn chuyên biệt cho sinh viên đại học ngành Công nghệ Thông tin và các khối ngành kỹ thuật phần mềm có nhu cầu làm chủ kỹ thuật phát triển ứng dụng Android Native sử dụng ngôn ngữ lập trình Java.

2. Người học cần chuẩn bị kiến thức nền tảng nào trước khi học?

Người học bắt buộc phải nắm vững kiến thức lập trình hướng đối tượng với ngôn ngữ Java, nguyên lý cơ sở dữ liệu quan hệ (ngôn ngữ SQL), cấu trúc tệp XML cơ bản và các khái niệm cơ bản về hệ điều hành như tiến trình, luồng và bộ nhớ.

3. Giáo trình này có điểm gì khác biệt so với các tài liệu lập trình Android khác?

Điểm khác biệt thể hiện ở cách tiếp cận học thuật chuyên sâu về cấu trúc hệ thống: phân tích sâu cơ chế gán mã UID của Linux Kernel, máy ảo tối ưu hóa Dalvik, cơ chế ngăn xếp Back Stack LIFO và vòng đời chi tiết của Activity/Fragment; kết hợp việc cập nhật hệ thống Gradle và công nghệ cơ sở dữ liệu thời gian thực Firebase.

4. Cần thực hiện các bước nào để tự học giáo trình hiệu quả?

Người học cần trang bị máy tính đạt chuẩn khuyến nghị (tối thiểu 8GB RAM, ổ cứng SSD, bật ảo hóa), thực hiện cài đặt Android Studio và thiết lập máy ảo AVD theo Chương 1, thực hành tuần tự từng bước thiết kế giao diện XML và viết mã xử lý sự kiện Java theo các ca mẫu từ Chương 2 đến Chương 5, đồng thời đối chiếu kỹ các bảng phương thức kỹ thuật được cung cấp.

5. Giáo trình có cung cấp tài liệu bổ trợ nào kèm theo không?

Tài liệu cung cấp hệ thống sơ đồ kiến trúc phân tầng, biểu đồ chuyển tiếp trạng thái vòng đời, mã nguồn mẫu chi tiết của các tệp Java và XML, bảng giải thích đối số truy vấn SQL/SQLite, cùng các liên kết chỉ dẫn tra cứu chính thức trên hệ thống tài liệu dành cho nhà phát triển Android (developer.android.com).


Kết luận

Giáo trình Phát triển ứng dụng cho thiết bị di động của Trường Đại học Công nghiệp Hà Nội là tài liệu học thuật có tính hệ thống cao, phản ánh chuẩn xác các khái niệm kỹ thuật cốt lõi trong quy trình phát triển phần mềm trên nền tảng Android. Giá trị khoa học của tài liệu nằm ở việc gắn kết chặt chẽ giữa nguyên lý kiến trúc hệ điều hành với việc triển khai các thành phần mã nguồn thông qua môi trường phát triển hiện đại Android Studio.

Lộ trình học tập khuyến nghị dành cho sinh viên bao gồm: làm chủ công cụ và nắm bắt kiến trúc hệ thống (Chương 1) $\rightarrow$ nghiên cứu vòng đời thành phần và cơ chế lưu trữ cục bộ (Chương 2) $\rightarrow$ xây dựng và kiểm soát tương tác giao diện người dùng (Chương 3) $\rightarrow$ thiết lập cơ chế giao tiếp liên màn hình và quản trị cơ sở dữ liệu quan hệ (Chương 4) $\rightarrow$ mở rộng triển khai kết nối cơ sở dữ liệu thời gian thực trên nền tảng đám mây (Chương 5).

Để đạt được năng lực phát triển toàn diện, người học nên phối hợp việc nghiên cứu giáo trình với việc thực hành gỡ lỗi trực tiếp trên thiết bị di động thực tế qua cổng USB Debugging, tra cứu bổ sung cổng thông tin nhà phát triển Google Android Developers và môi trường quản trị đám mây Firebase Console.