CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1. Tổng quan về hệ điều hành Android 1. Giới thiệu về Android Android là hệ điều hành di động phổ biến nhất thế giới, phát triển bởi Google. Được xây dựng trên nền tảng Linux, Android được thiết kế chủ yếu cho các thiết bị di động như điện thoại thông minh và máy tính bảng.
Với tính mở và khả năng tùy biến cao, Android đã thu hút được một cộng đồng nhà phát triển rộng lớn và đa dạng. Lịch sử phát triển Android được công ty Android Inc. phát triển và sau đó được Google mua lại vào năm 2005. Phiên bản đầu tiên của hệ điều hành này, Android 1.0, được phát hành vào năm 2008.
Kể từ đó, Android đã trải qua nhiều phiên bản nâng cấp, với mỗi phiên bản thường được đặt tên theo các món tráng miệng theo thứ tự bảng chữ cái. Kiến trúc của Android 1. Linux Kernel: Cung cấp các dịch vụ hệ thống cơ bản như bảo mật, quản lý bộ nhớ, quản lý tiến trình, ngăn xếp mạng và driver thiết bị 2. Libraries: Bao gồm các thư viện C/C++ như libc, media framework, graphics, và SQLite.
Android Runtime (ART): Máy ảo chạy các ứng dụng Android. Application Framework: Cung cấp các dịch vụ cấp cao để phát triển ứng dụng như quản lý hoạt động (Activity Manager), hệ thống thông báo (Notification Manager), và hệ thống xem (View System). Applications: Các ứng dụng được cài đặt sẵn như điện thoại, email, và trình duyệt web. 14 Hình TỔNG QUAN VỀ ĐỀ TÀI.1 Kiến trúc Android 1.
Mô hình thiết kế Model View Controller(MVC). Model View Controller(MVC) là gì? MVC là tên một phương pháp chia nhỏ một ứng dụng thành ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác nhau và ảnh hưởng lẫn nhau, đó là models, views, và controllers. - Model (DAL - Data Access Layer): Models trong các ứng dụng dựa trên MVC là những thành phần có nhiệm vụ lưu trữ thông tin, trạng thái của các đối tượng, thông thường nó là một lớp được ánh xạ từ một bảng trong CSDL. Lấy ví dụ, chúng ta có lớp Product được sử dụng để mô tả dữ liệu từ bảng Products trong SQL, bao gồm ProductID, OrderDate.
- Views (Web Website): Views, nó chính là các thành phần chịu trách nhiệm hiển thị các thông tin lên cho người dùng thông qua giao diện. Thông thường, các thông tin cần hiển thị được lấy từ thành phần Models. Ví dụ, đối tượng Product có một "Edit" view bao gồm các text boxes, các dropdowns và checkboxes để chỉnh sửa các thuộc tính của sản phẩm; có một "Display" view gồm 2 dòng, cột dòng là ProductID, dòng sau là OrderDate. để xem thông tin về sản phẩm.
15 - Controllers (Core): Controllers trong các ứng dụng kiêu MVC chịu trách nhiệm xử lý các tác động về mặt giao diện, các thao tác đối với models, và cuối cùng là chọn một view thích hợp để hiển thị ra màn hình. Trong kiến trúc MVC, view chỉ có tác dụng hiển thị giao diện mà thôi, còn điều kiển dòng nhập xuất của người dùng vẫn do Controllers đảm trách. Hình TỔNG QUAN VỀ ĐỀ TÀI.2 Mô hình MVC - Khi người sử dụng ra một lệnh (gõ câu lệnh, bấm nút chuột, bấm phím, chọn menu .), lệnh này sẽ được gửi tới phần Controller. - Phần Điều khiển sẽ khởi tạo phần Model (nếu cần thiết), gửi các yêu cầu tới phần Model để thực hiện.
- Căn cứ trên các lệnh và thông tin nhận được từ lệnh, phần Model sẽ đảm nhận việc lấy thông tin và cập nhật thông tin trong các hệ thống khác, ví dụ trong các Enterprise Server như Application Server, Mail Server, Database Server, từ hệ thống. - Sau khi hoàn thành việc thu thập, cập nhật thông tin, Model sẽ truyền những thông tin cần thiết về phần Controller. - Lúc này, phần Controller sẽ quyết định chọn thành phần nào trong phần View để hiện dữ liệu ra cho người dùng. 16 - Phần View khi làm nhiệm vụ hiện thông tin cho người dùng cũng có thể truy cập các thông tin hiển thị từ Model, hoặc gửi thông tin hiển thị tới Model.
Trường hợp này xảy ra khi Model chứa các thông tin có thể dùng để hiện trực tiếp, ví dụ một danh sách khách hàng, hoặc một danh sách các email trong mailbox. Khi phần View hiện thông tin, nó có thể báo cho phần Model biết nó đang hiện phần nào của thông tin, ví dụ như “Đang hiện thông tin khách hàng từ 20 đến 40". Những thông tin loại này không cần thiết phải gửi qua trung gian Controller 1. Ưu điểm và nhược điểm của mô hình MVC Ưu điểm - Đầu tiên, nhắc tới ưu điểm mô hình MVC thì đó là băng thông (Bandwidth) nhẹ vì không sử dụng viewstate nên khá tiết kiệm băng thông.
Việc giảm băng thông giúp website hoạt động ổn định hơn. - Kiểm tra đơn giản và dễ dàng, kiểm tra lỗi phần mềm trước khi bàn giao lại cho người dùng. - Một lợi thế chính của MVC là nó tách biệt các phần Model, Controller và View với nhau. - Sử dụng mô hình MVC chức năng Controller có vai trò quan trọng và tối ưu trên các nền tảng ngôn ngữ khác nhau - Ta có thể dễ dàng duy trì ứng dụng vì chúng được tách biệt với nhau.
- Có thể chia nhiều developer làm việc cùng một lúc. Công việc của các developer sẽ không ảnh hưởng đến nhau. - Hỗ trợ TTD (test-driven development). Chúng ta có thể tạo một ứng dụng với unit test và viết các won test case.
- Phiên bản mới nhất của MVC hỗ trợ trợ thiết kế responsive website mặc định và các mẫu cho mobile. Chúng ta có thể tạo công cụ View của riêng mình với cú pháp đơn giản hơn nhiều so với công cụ truyền thống. 17 Nhược điểm - Có thể tạo ra sự phức tạp ban đầu, đặc biệt đối với các ứng dụng nhỏ hoặc lập trình viên mới. - MVC đa phần phù hợp với công ty chuyên về website hoặc các dự án lớn thì mô hình này phù hợp hơn so với với các dự án nhỏ, lẻ vì khá là cồng kềnh và mất thời gian - Khó triển khai 1.
Lợi điểm của mô hình MVC - Quy trình phát triển nhanh hơn: MVC hỗ trợ phát việc phát triển nhanh chóng và song song. Nếu một mô hình MVC được dùng để phát triển bất kỳ ứng dụng web cụ thể nào, một lập trình viên có thể làm việc trên View và một developer khác có thể làm việc với Controller để tạo logic nghiệp vụ cho ứng dụng web đó.Do đó, ứng dụng mô hình MVC có thể được hoàn thành nhanh hơn ba lần so với các ứng dụng mô hình khác. - Khả năng cung cấp nhiều chế độ view: Trong mô hình MVC, bạn có thể tạo nhiều View cho chỉ một mô hình. Ngày nay, nhu cầu có thêm nhiều cách mới để truy cập ứng dụng và đang ngày càng tăng.
Do đó, việc sử dụng MVC để phát triển chắc chắn là một giải pháp tuyệt vời. Hơn nữa, với phương pháp này, việc nhân bản code rất hạn chế. Vì nó tách biệt dữ liệu và logic nghiệp vụ khỏi màn hình. - Các sửa đổi không ảnh hưởng đến toàn bộ mô hình: Đối với bất kỳ ứng dụng web nào, người dùng có xu hướng thay đổi thường xuyên.
Bạn có thể quan sát thông qua những thay đổi thường xuyên về màu sắc, font chữ, bố cục màn hình. Hay là thêm hỗ trợ thiết bị mới cho điện thoại hay máy tính bảng… Việc thêm một kiểu view mới trong MVC rất đơn giản. Vì phần Model không phụ thuộc vào phần View. Do đó, bất kỳ thay đổi nào trong Model sẽ không ảnh hưởng đến toàn bộ kiến trúc.
Công nghệ sử dụng trong dự án 1. Giới thiệu về ngôn ngữ kotlin Kotlin là một ngôn ngữ lập trình hiện đại, tĩnh và mã nguồn mở, được phát triển bởi JetBrains. Kotlin được thiết kế để tương thích với Java, giúp các nhà phát triển Java dễ dàng chuyển đổi và sử dụng. Google đã chính thức công nhận Kotlin là ngôn ngữ chính thức cho phát triển ứng dụng Android vào năm 2017.
Kotlin được giới thiệu lần đầu vào năm 2011 và phiên bản 1.0 ra mắt vào tháng 2 năm 2016. Sự hỗ trợ chính thức từ Google tại hội nghị Google I/O 2017 đã thúc đẩy sự phổ biến của Kotlin trong cộng đồng phát triển Android. Kotlin có cú pháp ngắn gọn và dễ hiểu, giúp giảm thiểu số dòng mã cần viết so với Java. Nó cũng giảm thiểu các lỗi NullPointerException bằng cách sử dụng hệ thống kiểu dữ liệu an toàn với null.
Kotlin tương thích hoàn toàn với Java, cho phép sử dụng thư viện Java hiện có và tích hợp với mã Java một cách dễ dàng. Ngoài ra, Kotlin còn cung cấp nhiều tính năng lập trình chức năng như lambda, higher-order functions, và lazy evaluation. Một trong những tính năng nổi bật của Kotlin là các lớp dữ liệu (data classes), giúp tạo ra các lớp chỉ với các thuộc tính dữ liệu một cách dễ dàng mà không cần viết nhiều mã boilerplate. Kotlin cũng cho phép mở rộng các lớp mà không cần kế thừa chúng thông qua extension functions.
Đặc biệt, Kotlin hỗ trợ lập trình không đồng bộ và xử lý đa luồng một cách hiệu quả và dễ hiểu nhờ vào coroutines. Trong phát triển Android, Kotlin đã trở thành lựa chọn phổ biến nhờ vào hiệu suất và năng suất cao, cú pháp ngắn gọn và các tính năng tiên tiến giúp nhà phát triển viết mã nhanh hơn và ít lỗi hơn. Các tính năng an toàn về null và hệ thống kiểu mạnh giúp giảm thiểu lỗi runtime. Android Studio cung cấp hỗ trợ mạnh mẽ cho Kotlin, bao gồm cả các công cụ kiểm tra lỗi và gỡ lỗi.
Kotlin cũng hỗ trợ phát triển ứng dụng đa nền tảng với Kotlin/JS cho phép biên dịch mã Kotlin sang JavaScript và Kotlin/Native cho phép biên dịch mã Kotlin sang mã máy, hỗ trợ phát triển ứng dụng cho các nền tảng không phải JVM như iOS. 19 Tóm lại, Kotlin mang đến nhiều lợi ích cho các nhà phát triển nhờ vào cú pháp hiện đại, tính tương thích cao với Java, và sự hỗ trợ mạnh mẽ từ các công cụ phát triển, giúp Kotlin trở thành lựa chọn hàng đầu cho phát triển ứng dụng Android và các dự án phần mềm khác. Giới thiệu về AndroidX AndroidX là một bộ thư viện hỗ trợ phát triển ứng dụng Android, được Google giới thiệu như là sự kế thừa của thư viện hỗ trợ Android (Android Support Library). AndroidX được tạo ra nhằm cung cấp các tính năng mới và cải tiến để giúp các nhà phát triển xây dựng ứng dụng Android một cách hiệu quả, linh hoạt và dễ bảo trì hơn.
AndroidX được phát triển với mục tiêu cải thiện tính nhất quán, khả năng tương thích ngược và tốc độ phát triển.