Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh ngành công nghệ thông tin phát triển mạnh mẽ, các thiết bị di động thông minh và máy vi tính đã trở thành phương tiện phổ biến phục vụ nhu cầu làm việc và giải trí hàng ngày. Lĩnh vực phát triển phần mềm cho thiết bị di động trở thành một ngành công nghiệp nhiều tiềm năng. Tại thời điểm tác giả thực hiện nghiên cứu, các nền tảng hệ điều hành di động như J2ME, Android, iOS, ứng dụng lai (Hybrid) và ứng dụng di động dựa trên nền tảng web (Web-based Mobile Application) cạnh tranh sôi động. Trong đó, hệ điều hành Android nổi bật lên nhờ sự kế thừa các ưu điểm kỹ thuật của những nền tảng đi trước, kết hợp với các công nghệ mở tiên tiến và nhanh chóng chiếm lĩnh thị phần lớn.
Xuất phát từ thực tiễn nhu cầu tiếp nhận thông tin và giải trí trên thiết bị di động ngày càng tăng cao, người dùng luôn đòi hỏi việc cập nhật thông tin phải diễn ra liên tục, tức thì. Do đó, tác giả lựa chọn đề tài "Xây dựng ứng dụng Android lấy dữ liệu mới trên Hosting theo thời gian thực" nhằm nghiên cứu các giải pháp kỹ thuật trên nền tảng Android, đồng thời xây dựng một hệ thống có khả năng tự động cập nhật dữ liệu từ máy chủ hosting và phát sinh thông báo khi có thông tin mới.
Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:
- Nghiên cứu tổng quan về lịch sử hình thành, kiến trúc phân tầng và quá trình phát triển các phiên bản của hệ điều hành Android.
- Tìm hiểu và thiết lập môi trường lập trình di động sử dụng Android Studio, bộ công cụ phát triển Java JDK và máy ảo Genymotion.
- Nghiên cứu các thành phần cốt lõi trong kiến trúc ứng dụng Android, bao gồm Activity, Vòng đời Activity, Intent, ViewGroup, View, SharedPreferences, Broadcast Receiver, Service, Animation và hệ quản trị cơ sở dữ liệu cục bộ SQLite.
- Tìm hiểu nền tảng dịch vụ web (Web Service), kiến trúc RESTful Web Service, các phương thức HTTP và định dạng trao đổi dữ liệu.
- Ứng dụng các kiến thức đã nghiên cứu để xây dựng bài toán thực tế: ứng dụng Android thông báo sản phẩm mới bằng cách định kỳ kiểm tra và lấy dữ liệu mới trên hosting theo thời gian thực.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Nền tảng hệ điều hành di động Android, các thành phần kiến trúc ứng dụng di động của Android SDK, kiến trúc dịch vụ web RESTful và cơ sở dữ liệu trên máy chủ hosting.
- Phạm vi không gian và thời gian: Đồ án tốt nghiệp đại học hệ chính quy ngành Công nghệ thông tin tại Trường Đại học Dân lập Hải Phòng, được hoàn thành vào tháng 08 năm 2018 dưới sự hướng dẫn của ThS. Phùng Anh Tuấn.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và công nghệ nền tảng
Nghiên cứu dựa trên khung lý thuyết về kiến trúc phân tầng của hệ điều hành Android và mô hình kiến trúc hướng dịch vụ Client - Server thông qua Web Service. Cụ thể:
- Kiến trúc hệ điều hành Android: Được tổ chức thành 4 lớp với 5 thành phần chính:
- Nhân Linux (Linux Kernel 2.6): Đóng vai trò là lớp trừu tượng hóa phần cứng, chịu trách nhiệm quản lý bảo mật, quản lý bộ nhớ, quản lý tiến trình, ngăn xếp mạng và mô hình trình điều khiển phần cứng.
- Thư viện Android (Libraries): Tập hợp các thư viện viết bằng C/C++ chạy trên Linux bao gồm libc (BSD), Media Framework (PacketVideo's OpenCORE), Quản lý bề mặt hiển thị (Surface Manager), LibWebCore (trình duyệt web nhúng), SGL (đồ họa 2D), Thư viện 3D (OpenGL ES 1.0 APIs), FreeType (vẽ phông chữ bitmap và vector) và SQLite.
- Môi trường thực thi Android (Android Runtime): Bao gồm các thư viện lõi Java và máy ảo Dalvik (Dalvik VM) tối ưu hóa việc sử dụng bộ nhớ bằng cách thực thi các tệp định dạng
.dex dựa trên thanh ghi (register-based), hoạt động đa luồng dựa trên nhân Linux.
- Khung ứng dụng (Application Framework): Cung cấp các API mở cho nhà phát triển gồm hệ thống View, Content Provider (truy xuất và chia sẻ dữ liệu), Resource Manager (quản lý chuỗi văn bản, tài nguyên đồ họa, bố cục giao diện), Notification Manager (hiển thị thông báo trên thanh trạng thái) và Activity Manager (quản lý vòng đời ứng dụng).
- Tầng ứng dụng (Applications): Tầng giao tiếp trực tiếp với người dùng cuối, chứa các ứng dụng hệ thống và ứng dụng do bên thứ ba phát triển.
- Kiến trúc dịch vụ web (RESTful Web Service): Khung giao tiếp truyền tải dữ liệu giữa máy chủ hosting và ứng dụng Android, hoạt động theo cơ chế phi trạng thái (stateless), tận dụng các phương thức chuẩn của giao thức HTTP, biểu diễn tài nguyên thông qua cấu trúc URI và hỗ trợ các định dạng dữ liệu có cấu trúc như JSON, XML, HTML hoặc Text.
- Hệ quản trị cơ sở dữ liệu: Hệ cơ sở dữ liệu quan hệ mã nguồn mở SQLite tuân theo chuẩn SQL92 được nhúng cục bộ trên thiết bị di động (kích thước gọn nhẹ dưới 300 kB) và hệ quản trị cơ sở dữ liệu trên máy chủ web hosting phục vụ lưu trữ dữ liệu tập trung.
Phương pháp nghiên cứu
Đồ án kết hợp các phương pháp nghiên cứu kỹ thuật phần mềm chuẩn:
- Phương pháp nghiên cứu tài liệu: Phân tích, tổng hợp các tài liệu kỹ thuật chuyên ngành từ nhà phát hành Google, tài liệu lập trình Java, Android SDK và các chuẩn thiết kế dịch vụ web.
- Phương pháp phân tích và thiết kế hệ thống: Sử dụng các công cụ mô hình hóa ngôn ngữ UML bao gồm biểu đồ quy trình nghiệp vụ, biểu đồ tuần tự (Sequence Diagram) và biểu đồ hoạt động (Activity Diagram) để thiết kế luồng xử lý dữ liệu giữa ứng dụng di động và hosting.
- Phương pháp thực nghiệm phát triển phần mềm: Cài đặt cấu hình môi trường phát triển thực tế, viết mã nguồn Java, thiết kế tệp giao diện XML, xây dựng các lớp xử lý dịch vụ web phía máy chủ và đóng gói kiểm thử ứng dụng trên môi trường giả lập cũng như thiết bị thực tế.
Nguồn dữ liệu
Dữ liệu sử dụng trong đồ án gồm:
- Dữ liệu tài liệu kỹ thuật từ Android Developers, tài liệu Java SE của Oracle.
- Dữ liệu cấu trúc bảng và bản ghi sản phẩm được thiết kế và lưu trữ trên hệ thống máy chủ hosting phục vụ thử nghiệm kịch bản thông báo sản phẩm mới.
Thiết kế và triển khai
Hệ thống được thiết kế theo mô hình tương tác Client - Server thông qua mạng truyền thông Internet, tích hợp giữa ứng dụng di động Android và dịch vụ web đặt trên máy chủ hosting.
| Thành phần |
Công nghệ / Môi trường triển khai |
Vai trò và chức năng chính |
| Phát triển ứng dụng di động (Client) |
Android Studio (IntelliJ IDEA), Java JDK 7+, Android SDK, Gradle |
Viết mã nguồn, thiết kế giao diện XML, cấu hình AndroidManifest.xml và đóng gói ứng dụng. |
| Môi trường máy ảo giả lập |
Genymotion kết hợp Oracle VirtualBox 4.x (yêu cầu OpenGL 2.0, CPU VT-x/AMD-V) |
Giả lập môi trường thiết bị di động Android đa kích thước màn hình để thực thi và sửa lỗi mã nguồn. |
| Dịch vụ web máy chủ (Hosting/Server) |
Nền tảng Web Hosting hỗ trợ Web Service |
Tiếp nhận yêu cầu từ ứng dụng, truy vấn dữ liệu và đóng gói phản hồi theo định dạng chuẩn (JSON, XML). |
| Cơ sở dữ liệu tập trung |
Database trên Hosting |
Lưu trữ thông tin danh mục, chi tiết sản phẩm mới cần cập nhật tới người dùng. |
| Cơ sở dữ liệu cục bộ |
SQLite tích hợp sẵn trong Android SDK |
Lưu trữ tạm dữ liệu sản phẩm ngoại tuyến trên bộ nhớ thiết bị mà không cần cấu hình mạng JDBC/ODBC. |
Kiến trúc phân lớp của dịch vụ web trên hosting
Dịch vụ web được xây dựng gồm ba lớp tách biệt:
- Lớp nhận yêu cầu: Đón nhận các kết nối HTTP từ ứng dụng di động Android, trích xuất tham số yêu cầu.
- Lớp xử lý yêu cầu: Tiếp nhận tham số, điều hướng luồng nghiệp vụ, kiểm tra tính hợp lệ của dữ liệu trước khi gửi tới lớp dữ liệu.
- Lớp truy vấn cơ sở dữ liệu: Thực hiện kết nối tới database trên hosting, thực thi các câu lệnh truy vấn để lấy ra các bản ghi sản phẩm mới nhất và chuyển kết quả ngược lại cho lớp xử lý đóng gói.
Kiến trúc các mô-đun trên ứng dụng di động Android
Phía ứng dụng Android được tổ chức thành các mô-đun chức năng:
- Mô-đun gửi yêu cầu và nhận dữ liệu: Thiết lập kết nối mạng, gửi yêu cầu dạng HTTP tới URI của dịch vụ web trên hosting và đọc luồng dữ liệu phản hồi (JSON/XML).
- Lớp định hằng thời gian: Thiết lập chu kỳ lặp lại theo thời gian thực (polling) để kích hoạt tiến trình chạy ngầm gửi yêu cầu thăm dò dữ liệu mới trên hosting.
- Mô-đun hiển thị và thông báo: Sử dụng Notification Manager để đưa cảnh báo lên thanh trạng thái khi phát hiện dữ liệu sản phẩm mới, đồng thời cập nhật dữ liệu hiển thị lên các ViewGroup giao diện (ListView, GridView hoặc RecyclerView).
Nội dung chính theo từng chương
CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID
Chương 1 trình bày chi tiết về nguồn gốc, cấu trúc kỹ thuật và lịch sử phát triển của hệ điều hành Android:
- Lịch sử ra đời: Ban đầu Android là hệ điều hành do Android Inc. phát triển dựa trên lõi Linux, với các thành viên chủ chốt gồm Andy Rubin, Rich Miner, Nick Sears và Chris White. Google mua lại công ty vào năm 2005. Cuối năm 2007, Liên minh thiết bị cầm tay mã nguồn mở (Open Handset Alliance - OHA) được thành lập với sự tham gia của các tập đoàn công nghệ và viễn thông (Google, HTC, Intel, LG, Motorola, Qualcomm, Samsung, T-Mobile...). Chiếc điện thoại Android thương mại đầu tiên là T-Mobile G1 ra mắt cùng bản SDK Candidate 1 vào cuối năm 2008. Cuối năm 2008, Google cung cấp thiết bị cầm tay Android Dev Phone 1 cho lập trình viên thử nghiệm không ràng buộc hợp đồng mạng.
- Kiến trúc hệ thống: Phân tích chi tiết 4 lớp kiến trúc gồm Nhân Linux 2.6, tầng Thư viện hệ thống C/C++ (libc, Media OpenCORE, LibWebCore, SQLite, SGL, FreeType), môi trường thực thi Android Runtime với máy ảo Dalvik VM chạy tệp định dạng
.dex biên dịch từ bytecode Java, Khung ứng dụng (Application Framework) và Tầng ứng dụng.
- Giao diện và cơ chế tương tác: Giao diện dựa trên cảm ứng trực tiếp (chạm, vuốt, kéo giãn, thu lại) kèm cơ chế rung phản hồi, tận dụng phần cứng gia tốc kế, con quay hồi chuyển, cảm biến khoảng cách. Giao diện màn hình chính gồm biểu tượng ứng dụng và các tiện ích (widget). Phía trên cùng là thanh trạng thái (status bar) có khả năng kéo xuống để theo dõi danh sách thông báo.
- Quá trình phát triển các phiên bản Android: Tác giả hệ thống hóa các mốc phát triển chính từ Android 1.5 Cupcake (tháng 5/2009, bổ sung soft-keyboard, live folder), Android 1.6 Donut (mạng CDMA, nhiều kích thước màn hình, text-to-speech), Android 2.1 Eclair (hỗ trợ NFC và giao thức SIP/VoIP), Android 2.3 Froyo/Gingerbread (tethering Wi-Fi, C2DM đẩy thông báo, JIT compiler, giao diện tối màu), Android 3.0/3.6 Honeycomb (dành riêng cho máy tính bảng, giao diện holographic), Android 4.0 Ice Cream Sandwich (giao diện Holo, phông chữ Roboto, mở khóa khuôn mặt), Android 4.1-4.3 Jelly Bean (tối ưu hóa hiệu năng, mở rộng thanh thông báo), Android 4.4 KitKat (tối ưu hóa cho thiết bị cấu hình thấp), Android 5.0/5.1 Lollipop (ngôn ngữ thiết kế Material Design, máy ảo ART thay thế Dalvik, dự án tiết kiệm pin Project Volta), Android 6.0/6.1 Marshmallow (quản lý quyền truy cập mới, Now On Tap, quản lý năng lượng thông minh, hỗ trợ vân tay và USB Type-C), Android 7.0/7.2 Nougat (đa nhiệm chia đôi màn hình, trả lời trực tiếp từ thông báo, API đồ họa Vulkan) và Android 8.0/8.1 Oreo (tối ưu hóa ngầm, hoàn thiện API phát hành tháng 8/2017).
CHƯƠNG 2: TẠO ỨNG DỤNG VỚI ANDROID STUDIO
Chương 2 đóng vai trò là phần nền tảng kỹ thuật lập trình, hướng dẫn cài đặt môi trường và giải thích toàn bộ cấu trúc dự án:
- Cài đặt môi trường: Hướng dẫn cài đặt Java JDK và cấu hình biến môi trường PATH; cài đặt IDE Android Studio (phát triển dựa trên IntelliJ IDEA Community Edition thay thế cho Eclipse từ đầu năm 2015, yêu cầu hệ điều hành Windows, RAM tối thiểu 4 GB, ổ cứng trống ít nhất 2 GB, độ phân giải 1280x800); cài đặt máy ảo Genymotion (yêu cầu OpenGL 2.0, CPU hỗ trợ VT-x/AMD-V, RAM tối thiểu 1 GB, ổ cứng trống ít nhất 2 GB, tích hợp phần mềm Oracle VirtualBox 4.x).
- Cấu trúc dự án Android: Thư mục mã nguồn
java, thư mục tài nguyên res bao gồm drawable (chứa ảnh và tệp cấu hình XML trạng thái nút), layout (chứa các tệp giao diện XML màn hình), mipmap (chứa biểu tượng logo ứng dụng), values (chứa các tệp định nghĩa tài nguyên tĩnh: color.xml cho mã màu, dimens.xml cho kích cỡ chuẩn hóa theo mật độ điểm ảnh, strings.xml quản lý chuỗi hiển thị tránh lặp mã nguồn, styles.xml định nghĩa kiểu dáng tái sử dụng) và tệp kịch bản biên dịch build.gradle.
- Tệp cấu hình
AndroidManifest.xml: Thành phần trung tâm khai báo mã gói định danh ứng dụng, các thành phần ứng dụng (<activity>, <service>, <receiver>, <provider>), danh sách quyền truy cập hệ thống thông qua thẻ <uses-permission> (như quyền kết nối mạng, đọc trạng thái điện thoại READ_PHONE_STATE), khai báo phiên bản SDK qua thẻ <uses-sdk>.
- Hệ thống giao diện người dùng:
- Nhóm hiển thị (ViewGroup): Phân tích các lớp quản lý bố cục gồm LinearLayout (xếp chồng ngang hoặc dọc, hỗ trợ thuộc tính weight), RelativeLayout (sắp xếp phần tử tương đối với nhau), FrameLayout (vẽ các phần tử theo dạng ngăn xếp), ScrollView (hỗ trợ cuộn nội dung), RecyclerView (hỗ trợ mẫu thiết kế view holder tái sử dụng phần tử tối ưu bộ nhớ) và CoordinatorLayout.
- Thành phần hiển thị (View/Widget): Khảo sát các thành phần giao diện cơ bản gồm TextView, EditText, Button, ImageButton, CheckBox, ToggleButton, RadioButton, Spinner, ListView, GridView, ViewFlipper, QuickContactBadge, ImageView, Switch, ProgressBar cùng các thuộc tính cốt lõi (
layout_width, layout_height nhận giá trị wrap_content hoặc match_parent, id, text, textColor, textSize, background, gravity, inputType, hint).
- Vòng đời Activity (Activity Lifecycle): Quản lý theo cấu trúc ngăn xếp (Activity Stack). Một Activity trải qua 4 trạng thái vận hành chính:
- Active / Running: Nằm trên đỉnh ngăn xếp, hiển thị trên cùng màn hình và tương tác trực tiếp với người dùng.
- Paused: Vẫn nhìn thấy một phần trên màn hình nhưng bị che khuất bởi activity dạng hội thoại (dialog), có thể bị hệ điều hành giải phóng khi thiết bị cạn bộ nhớ.
- Stopped: Bị che khuất hoàn toàn bởi activity khác, lưu trữ đầy đủ trạng thái nhưng không hiển thị, dễ dàng bị thu hồi tài nguyên bộ nhớ.
- Destroyed: Bị hủy bỏ khỏi bộ nhớ, khi được gọi lại sẽ phải khởi tạo lại từ đầu.
- Cơ chế truyền thông Intent: Phân loại thành Intent tường minh (Explicit Intent - chỉ định chính xác tên lớp thành phần cần gọi qua
setClass() hoặc setComponent()) và Intent không tường minh (Implicit Intent - chỉ định hành động như ACTION_VIEW, ACTION_SEND để hệ thống lựa chọn thành phần phù hợp). Hướng dẫn kỹ thuật truyền tải dữ liệu giữa các Activity thông qua Bundle, các phương thức putExtra(), getStringExtra(), nhận kết quả phản hồi thông qua cặp phương thức startActivityForResult() và onActivityResult().
- Lưu trữ dữ liệu SharedPreferences: Giao diện lưu trữ các cặp khóa - giá trị (Key - Value) vào tệp XML nội bộ của ứng dụng với các kiểu dữ liệu nguyên thủy (
int, float, string, boolean, long), chế độ truy cập bảo mật Context.MODE_PRIVATE và thao tác chỉnh sửa dữ liệu thông qua đối tượng SharedPreferences.Editor (edit(), remove(), clear(), apply() hoặc commit()).
- Thành phần Broadcast Receiver: Cơ chế lắng nghe các sự kiện hệ thống hoặc ứng dụng phát ra. Hướng dẫn hai phương thức đăng ký: đăng ký tĩnh qua tệp
AndroidManifest.xml và đăng ký động thông qua phương thức registerReceiver() gắn liền với vòng đời Activity. Xử lý logic sự kiện trong phương thức onReceive(Context, Intent) trên luồng giao diện UI. Tác giả lưu ý vấn đề bảo mật từ Android 3.1 trở đi cần thiết lập thuộc tính android:exported="false" để hạn chế nhận phát tán từ các ứng dụng ngoài.
- Dịch vụ chạy ngầm Service: Thành phần xử lý các tác vụ dài hạn không cần giao diện người dùng. Phân loại thành ba dạng dịch vụ:
- Started Service (Unbound Service): Khởi chạy bằng
startService(), hoạt động độc lập ngay cả khi thành phần gọi bị hủy, dừng bằng stopSelf() hoặc stopService().
- Bound Service: Gắn kết với thành phần giao diện thông qua
bindService(), giao tiếp tiến trình IPC thông qua đối tượng IBinder trả về ở onBind(), tự động ngắt khi gọi onUnbind().
- IntentService: Lớp dịch vụ chạy trên luồng nền riêng để xử lý các nhiệm vụ đơn lẻ một lần rồi tự động hủy bỏ.
- Hiệu ứng chuyển động (Animation): Định nghĩa các hiệu ứng trong thư mục
res/anim (Fade in, Fade out, Blink, Zoom in, Zoom out, Rotate, Move, Side up, Side down, Sequential, Together), tải bằng AnimationUtils.loadAnimation() và bắt sự kiện qua AnimationListener.
- Hệ quản trị cơ sở dữ liệu SQLite: Cơ sở dữ liệu quan hệ mã nguồn mở do Richard Hipp phát triển bằng ngôn ngữ C, nhúng trực tiếp vào thiết bị Android mà không cần trình điều khiển kết nối mạng phức tạp, dung lượng nhẹ dưới 300 kB, hỗ trợ xử lý giao dịch an toàn (transaction) tuân theo chuẩn SQL92.
CHƯƠNG 3: TỔNG QUAN VỀ WEBSERVICE
Chương 3 trình bày các kiến thức nền tảng về dịch vụ web và hạ tầng máy chủ:
- Hạ tầng máy chủ Web Hosting và Cơ sở dữ liệu: Khái niệm hosting, các yêu cầu kỹ thuật và tính toán dung lượng hosting; các đặc điểm, chủng loại cơ sở dữ liệu trên web và các hệ quản trị cơ sở dữ liệu phổ biến phục vụ hệ thống trực tuyến.
- Nền tảng Dịch vụ web (Web Service): Định nghĩa dịch vụ web, cách thức vận hành và giao tiếp giữa các nền tảng ứng dụng khác nhau qua môi trường mạng.
- Kiến trúc RESTful Web Service: Trình bày chi tiết các nguyên tắc thiết kế của dịch vụ web RESTful:
- Khai thác các phương thức chuẩn của giao thức truyền tải siêu văn bản HTTP (như GET, POST).
- Nguyên lý phi trạng thái (stateless), đảm bảo mỗi yêu cầu gửi từ máy khách lên máy chủ đều độc lập và chứa đầy đủ dữ liệu để xử lý mà không phụ thuộc vào trạng thái phiên làm việc trước đó.
- Định danh và hiển thị tài nguyên thông qua cấu trúc URI trực quan như cấu trúc cây thư mục.
- Các định dạng biểu diễn dữ liệu phản hồi tiêu chuẩn như JSON, XML, HTML và Plain Text.
CHƯƠNG 4: ỨNG DỤNG Thông báo sản phẩm mới
Chương 4 là chương hiện thực hóa giải pháp ứng dụng thực tế của đồ án:
- Phát biểu bài toán: Xây dựng giải pháp kỹ thuật giúp khách hàng hoặc người dùng nhận được thông báo tức thì khi cửa hàng hoặc hệ thống đăng tải thông tin về các mặt hàng, sản phẩm mới lên máy chủ hosting.
- Mô hình hóa hệ thống: Xây dựng hệ thống các biểu đồ thiết kế phần mềm gồm biểu đồ quy trình nghiệp vụ tổng quát, biểu đồ tuần tự (Sequence Diagram) mô tả chi tiết thứ tự trao đổi thông điệp giữa Activity giao diện, Lớp định hằng thời gian, Dịch vụ web và Cơ sở dữ liệu, và biểu đồ hoạt động (Activity Diagram) thể hiện các nhánh xử lý logic của chương trình.
- Xây dựng cơ sở dữ liệu trên máy chủ: Thiết kế các bảng dữ liệu lưu trữ thông tin sản phẩm trên máy chủ hosting.
- Xây dựng dịch vụ web máy chủ: Hiện thực mã nguồn dịch vụ web theo mô hình 3 lớp:
- Lớp truy vấn cơ sở dữ liệu: Thực thi kết nối và đọc dữ liệu từ các bảng sản phẩm.
- Lớp nhận yêu cầu: Đón nhận tín hiệu kiểm tra dữ liệu từ ứng dụng Android.
- Lớp xử lý yêu cầu: Điều phối quy trình xử lý và trả kết quả cho máy khách.
- Xây dựng ứng dụng di động Android: Lập trình mô-đun gửi yêu cầu và nhận dữ liệu qua giao thức HTTP; xây dựng lớp định hằng thời gian (Timer polling) chịu trách nhiệm định kỳ gửi truy vấn lên hosting để kiểm tra trạng thái dữ liệu theo thời gian thực; xử lý hiển thị giao diện danh sách sản phẩm và đẩy thông báo lên thanh trạng thái người dùng.
Kết quả và đóng góp
Kết quả kỹ thuật đạt được
- Thiết lập hoàn chỉnh môi trường phát triển ứng dụng di động gồm Android Studio và máy ảo Genymotion tích hợp VirtualBox, đáp ứng đầy đủ các thông số cấu hình phần cứng tối thiểu (RAM 4 GB, ổ cứng trống 2 GB cho Android Studio; RAM 1 GB, ổ cứng trống 2 GB cho Genymotion).
- Hiện thực hóa thành công mô hình trao đổi dữ liệu hai chiều giữa ứng dụng Android và máy chủ Web Hosting thông qua cơ chế dịch vụ web RESTful.
- Ứng dụng xử lý thành công việc phân tích định dạng dữ liệu (JSON/XML) trả về từ máy chủ, lưu trữ và kết xuất hiển thị linh hoạt trên các thành phần giao diện của Android SDK.
- Cài đặt hoàn chỉnh lớp định hằng thời gian trên ứng dụng Android để tự động kích hoạt tiến trình kiểm tra bản ghi mới trên hosting theo chu kỳ định sẵn, kích hoạt thành phần thông báo của hệ thống khi có sản phẩm mới xuất hiện trên cơ sở dữ liệu máy chủ.
Đóng góp kỹ thuật của đề tài
- Hệ thống hóa một cách chi tiết và có hệ thống các khối kiến thức nền tảng trong lập trình Android: từ kiến trúc 4 lớp của hệ điều hành, cơ chế vòng đời Activity, quản lý bộ nhớ của máy ảo Dalvik, phương thức truyền thông liên thành phần Intent, cho đến các kỹ thuật dịch vụ chạy ngầm Service và tiếp nhận thông điệp Broadcast Receiver.
- Cung cấp tài liệu thiết kế hoàn chỉnh từ khâu phân tích bài toán, xây dựng biểu đồ phân tích UML (nghiệp vụ, tuần tự, hoạt động) cho đến việc triển khai dịch vụ web 3 lớp tích hợp trực tiếp với cơ sở dữ liệu hosting.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Cơ chế cập nhật dữ liệu "theo thời gian thực" trong đồ án chủ yếu được triển khai bằng cơ chế định hằng thời gian (chu kỳ thăm dò - polling) từ phía máy khách Android lên Web Service trên hosting, chưa áp dụng cơ chế đẩy dữ liệu chủ động từ máy chủ (Server Push hoặc WebSocket).
- Tài liệu tập trung nhiều vào việc trình bày tổng quan lý thuyết nền tảng của hệ điều hành Android và môi trường Android Studio tại thời điểm năm 2018, trong khi các số liệu đo kiểm hiệu năng chi tiết về lưu lượng mạng hoặc mức độ tiêu hao pin của tiến trình định hằng thời gian chưa được định lượng bằng các bảng đo kiểm mở rộng.
Hướng nghiên cứu tiếp
- Nâng cấp cơ chế lấy dữ liệu thời gian thực sang các giải pháp điện toán đám mây và dịch vụ đẩy thông báo chuyên dụng (như Firebase Cloud Messaging - FCM) nhằm giảm thiểu tải lưu lượng mạng và tiết kiệm pin cho thiết bị di động.
- Hoàn thiện các tiêu chuẩn bảo mật cho dịch vụ web trên hosting, bổ sung mã hóa dữ liệu trao đổi qua giao thức HTTPS.
- Cập nhật giao diện người dùng theo chuẩn Material Design thế hệ mới trên các phiên bản Android nâng cao.
Giá trị tham khảo
Đồ án có giá trị tham khảo thiết thực cho:
- Sinh viên ngành Công nghệ thông tin: Làm tài liệu tham khảo cho các môn học Lập trình thiết bị di động, Phát triển ứng dụng phân tán hoặc làm đồ án tốt nghiệp đại học chuyên ngành kỹ thuật phần mềm.
- Lập trình viên mới bắt đầu với Android: Nội dung Chương 2 cung cấp tài liệu chi tiết, có kèm ví dụ mã nguồn về cách tổ chức tệp
AndroidManifest.xml, quản lý tài nguyên trong thư mục res, cách điều hướng và truyền dữ liệu bằng Intent, kỹ thuật lưu trữ cục bộ với SharedPreferences và SQLite.
- Kỹ sư phát triển hệ thống: Tham khảo phương pháp phân tích thiết kế hệ thống phần mềm (Chương 4) với các biểu đồ UML và mô hình phân tầng dịch vụ web kết nối giữa máy chủ hosting với ứng dụng máy khách.
Câu hỏi thường gặp
1. Đồ án hiện thực hóa cơ chế lấy dữ liệu mới trên hosting theo thời gian thực bằng kỹ thuật nào?
Ứng dụng Android sử dụng lớp định hằng thời gian (Timer) để thiết lập chu kỳ định kỳ gửi yêu cầu HTTP từ máy khách lên dịch vụ web trên hosting. Khi dịch vụ web truy vấn cơ sở dữ liệu và phát hiện có bản ghi sản phẩm mới, dữ liệu sẽ được phản hồi về ứng dụng Android để hiển thị và kích hoạt thông báo trên thanh trạng thái thiết bị.
2. Cấu hình máy tính tối thiểu được tác giả xác định để cài đặt Android Studio và Genymotion là gì?
Đối với Android Studio: Hệ điều hành Windows (32/64-bit), RAM tối thiểu 4 GB, ổ cứng trống ít nhất 2 GB, màn hình độ phân giải tối thiểu 1280x800, cài đặt Java JDK từ bản 7 trở lên. Đối với máy ảo Genymotion: Hỗ trợ đồ họa OpenGL 2.0, CPU hỗ trợ VT-x hoặc AMD-V, RAM tối thiểu 1 GB, ổ cứng trống ít nhất 2 GB, độ phân giải màn hình từ 1366x768 pixel và cài đặt kèm Oracle VirtualBox 4.x.
3. Máy ảo Dalvik trong hệ điều hành Android có đặc điểm kỹ thuật gì nổi bật?
Máy ảo Dalvik là máy ảo dựa trên thanh ghi (register-based), thực thi các tệp định dạng .dex (Dalvik Executable) được tối ưu hóa để chiếm ít bộ nhớ nhất. Dalvik VM dựa trên nhân Linux để quản lý luồng và bộ nhớ thấp, cho phép mỗi ứng dụng Android chạy độc lập trong một tiến trình riêng biệt với hiệu năng cao.
4. Đồ án phân loại Service trong Android thành những loại nào và cách kết thúc từng loại?
Tác giả phân loại thành 3 dạng dịch vụ: Started Service (Unbound Service - khởi động bằng startService(), dừng bằng stopSelf() hoặc stopService()), Bound Service (ràng buộc bằng bindService(), kết thúc bằng cách gỡ ràng buộc hoặc hủy thông qua unbindService()), và IntentService (thực thi tác vụ tuần tự một lần trên luồng riêng rồi tự động hủy bỏ khi hoàn thành công việc).
5. Tệp AndroidManifest.xml đóng vai trò gì và có những thẻ khai báo cơ bản nào?
Tệp AndroidManifest.xml là tệp cấu hình cốt lõi của một dự án Android, xác định định danh gói ứng dụng, thông số phiên bản SDK tối thiểu, khai báo quyền truy cập hệ thống và khai báo các thành phần ứng dụng. Các thẻ chính gồm <uses-permission> (xin cấp quyền hệ thống), <application>, <activity> (khai báo màn hình), <service> (khai báo dịch vụ ngầm), <receiver> (khai báo bộ nhận quảng bá) và <uses-sdk> (ấn định phiên bản SDK).
Kết luận
Đồ án "Xây dựng ứng dụng Android lấy dữ liệu mới trên Hosting theo thời gian thực" của sinh viên Nguyễn Văn Cảnh (Khoa Công nghệ thông tin, Trường Đại học Dân lập Hải Phòng) đã nghiên cứu toàn diện nền tảng hệ điều hành di động Android và kiến trúc dịch vụ web RESTful. Tác giả đã mô hình hóa bài toán thông báo sản phẩm mới bằng các biểu đồ phân tích UML chuẩn mực, tổ chức dịch vụ web 3 lớp trên máy chủ hosting và xây dựng ứng dụng di động tiếp nhận dữ liệu định kỳ qua lớp định hằng thời gian. Công trình là tài liệu tham khảo có cấu trúc rõ ràng, cung cấp kiến thức nền tảng thực tế cho việc nghiên cứu và phát triển các hệ thống tích hợp di động - máy chủ.