Chương 1. Hệ điều hành Android 1. Giới thiệu về Android Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban đầu, Android được phát triển bởi Android, Inc.
Với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005. Logo Hệ điều hành android Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào năm 2008. Lịch sử phát triển Android Hình 1.
Phiên bản android 11 GVHD: ThS. Nguyễn Thị Minh Nương 1 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu Từ tháng 10 năm 2003 đến tháng 12 năm 2020, hệ điều hành Android được phát triển qua nhiều phiên bản. Trong đó có các phiên bản nổi bật như sau: ➢ Tháng 10 năm 2003, Android, Inc. được thành lập tại Palo Alto, California.
➢ Ngày 17 tháng 8 năm 2005, Google mua lại Android. ➢ Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến hệ điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát hành trước. Tính tới ngày 9 tháng 9 năm 2020 phiên bản Android 11 là phiên bản mới nhất. Các thành phần của một ứng dụng Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản sau: ➢ Activity.
Bốn thành phần trong ứng dụng android Các thành phần trong hình 1.3 không nhất thiết phải có mặt đầy đủ trong ứng dụng. Chúng ta có thể xem các thành phần nào được sử dụng trong ứng dụng bằng việc xem khai báo trong file AndroidManifest. Nguyễn Thị Minh Nương 2 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu a) Activity ⁂ Khái niệm Một Activity được xem như một điểm tiếp xúc với người dùng. Nó là một màn hình đơn với giao diện trên đó.
Ví dụ, khi cài và chạy lên ứng dụng này thì màn hình chạy lên các bạn sẽ thấy giao diện hiện thị cho chúng ta xem, đó là một Activity. Activty giúp người dùng tương tác với hệ thống, thực hiện các chức năng cần thiết trên đó, chuyển đổi qua lại giữa các màn hình giao diện/ chức năng. Mỗi hoạt động có một cửa sổ để vẽ lên. Thông thường cửa sổ này phủ đầy màn hình, ngoài ra nó cũng có thể có thêm các cửa sổ con khác như là hộp thoại.
Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp bậc các View (là đối tượng của lớp Views). ⁂ Vòng đời hoạt động Các hoạt động trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp. Khi có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp, chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ. Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực thi.
Nguyễn Thị Minh Nương 3 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu Vòng đời của một hoạt động có thể được thể hiện trong những quá trình sau: Hình 1. Mô tả vòng đời của Activity GVHD: ThS. Nguyễn Thị Minh Nương 4 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu b) Services Service có chức năng giúp ứng dụng vẫn chạy được, nhưng không cần hiện thị trên giao diện (gọi là chạy ngầm bên dưới ). Mô tả service trong android Ví dụ khi dùng các ứng nghe nhạc, mặc dù đã tắt ứng dụng nhưng vẫn nghe được nhạc (đó là vì nó đang chạy dưới nền /background).
Chúng ta có thể liên kết/ kết nối giữa một Activity với một service. Khi tải một file từ trên mạng, việc tải thực hiện ở service, sau đó sẽ trả kết quả phần trăm tải lên activity để hiện thị cho người dùng biết. Nguyễn Thị Minh Nương 5 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu Vòng đời của Service được thể hiển qua hình dưới dây: Hình 1. Mô tả vòng đời của service c) Broadcast Receivers Hình 1.
Ví dụ mô tả về Android Broadcase Receiver Broadcast receiver được sử dụng trong nhiều trường hợp, ví dụ: để chuyển dữ liệu từ service lên activity (ngoài sử dụng binding) chúng ta có thể sử dụng broadcast để gửi dữ liệu. Hoặc trong các ứng dụng như hẹn giờ, khi đến giờ hẹn, ứng dụng sẽ sử dụng broadcast báo thức, tạo ra notification trên màn hình để báo cho người dùng biết. Nguyễn Thị Minh Nương 6 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu d) Content Provider Content provider quản lý các cách để ứng dụng có thể lưu trữ dữ liệu trên hệ thống. Chúng ta sẽ biết cụ thể về thành phần này khi xây dựng các ứng dụng cần lưu trữ vào SQLite.
Mô tả quá trình truyền tải của Content Provider Ví dụ trong các ứng dụng từ điển, dữ liệu, từ vựng được lưu trữ trong SQlite và Content provider gọi để lấy ra cho người dùng xem. Ngoài ra thành phần này còn thực hiện các chức năng, thêm, sửa, xóa dữ liệu… 1. Ngôn ngữ Kotlin 1. Giới thiệu về Kotlin Kotlin là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (Java Virtual Machine) và có thể được biên dịch sang mã nguồn Java.
Kotlin được tạo ra bởi JetBrains và xuất hiện lần đầu tiên vào năm 2011 và được Google thông báo là “Android official language” (Tạm dịch là ngôn ngữ chính thức của Android) vào sự kiện Google I/O năm 2017. Loogo ngôn ngữ Kotlin GVHD: ThS. Nguyễn Thị Minh Nương 7 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu Theo website JetBrains, mục tiêu quan trọng của Kotlin là tính hữu dụng. Từ khi mới xuất hiện vào năm 2011 cho đến phiên bản 1.0 (15/02/2016), JetBrains luôn chú trọng đến tính tương hợp với Java.
Kotlin ra đời để khắc phục lỗi bug điển hình là null pointer reference và giảm tính dài dòng của ngôn ngữ Java. Kotlin trong Android Trước khi Kotlin xuất hiện để xây dựng và phát triển một phần mềm di động, các lập trình viên không có sự lựa chọn khác ngoài Java. Mặc dù Java xuất hiện sớm và được sử dụng rộng rãi. Tuy nhiên trong quá trình hoạt động Java sinh ra rất nhiều file rác.
Kotlin không chỉ giải quyết được vấn đề xử lý file rác mà còn giảm số lượng mã code, mã code dễ đọc, dễ hiểu hơn. Kotlin có khả năng tận dụng các thư viện hiện có của JVM (Java Virtual Machine) và có khả năng tương tác với Java 100%. Kể từ Android Studio 3.0 (được phát hành vào tháng 10 năm 2017), nó được nhúng trực tiếp vào IDE Android Studio. Kotlin ra đời được JetBrains hy vọng sẽ được sử dụng trong các lĩnh vực khác.Từ ngày xuất đến tới tháng 12 năm 2020 Kotlin đã được phát triển và cập nhật được qua nhiều phiên bản.
Lịch sử phát triển Kotlin Cái tên Kotlin xuất phát từ một hòn đảo gần thành phố Saint Petersburg (Nga) – nơi JetBrains hoạt động nghiên cứu và phát triển. ➢ Vào tháng 7 năm 2011, JetBrains giới thiệu ngôn ngữ mới cho JMV. Với mục tiêu Kotlin biên dịch nhanh như Java. ➢ Vào ngày 15 tháng 2 năm 2016, Kotlin v1.0 được phát hành.
Nó được coi là phiên bản chính thức đầu tiên. ➢ Vào ngày 28 tháng 11 năm 2017, Kotlin v1.2 được phát hành. Tính năng chia sẻ mã nguồn giữa nền tảng JVM và JavaScript mới được thêm vào bản này. ➢ Vào ngày 29 tháng 10 năm 2018, Kotlin v1.3 được phát hành.
Các coroutine API cho lập trình bất đồng bộ. ➢ Vào ngày 17 tháng 8 năm 2020, Kotlin v1.4 được phát hành. Với phiên bản này JetBrains tập trung vào chất lượng và hiệu suất. Nguyễn Thị Minh Nương 8 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu 1.
Ưu và nhược điểm của Kotlin so với Java Java cũng là một ngôn ngữ lập trình. Trong việc phát triển ứng dụng di động cho hệ điều hành Android, Java là ngôn ngữ lựa chọn số 1 trước khi Kotlin được phát triển rộng rãi. Mô tả các ứng dụng của ngôn ngữ Java Java được nhiều người sử dụng bởi vì: ✓ Cú pháp dễ hiểu, lập trình được nhiều thứ-Web, mobile, …. ✓ Code Android từ Java tương thích rất tốt, rất ít lỗi.
✓ Có cộng đồng lớn, nhiều hướng dẫn và thư viện. ✓ Có nhiều công ty tuyển dụng. Tuy có nhiều ưu điểm như thế, nhưng Java cũng có những nhược điểm chí mạng như: ✓ Các dòng code dài dòng. ✓ Lỗi NullPointerException, lỗi này xảy ra khi bạn gọi object hay phương thức bị null.
Nguyễn Thị Minh Nương 9 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu Vì Kotlin sinh sau đẻ muộn cho nên nó được cải tiến khá nhiều và khắc phục được nhiều bất cập còn tồn động trong Java. Cụ thể như sau: a) Sự tương thích Một trong những ưu điểm của Kotlin là Kotlin và Java có thể chứa cùng chung một dự án. Đồng thời, hai ngôn ngữ Kotlin, Java có thể gọi phương thức giữa các class với nhau. Về tính tương tác giữa Java và Kotlin là tuyệt đối.
b) Kotlin ngắn gọn hơn Java Có thể nói đây là một lợi ích lớn nhất khi so với Java. Cũng là một bài toán logic, tuy nhiên bên Java số lượng tạo ra nhiều hơn so Kotlin. Ví dụ code giữa Java và Kotlin GVHD: ThS. Nguyễn Thị Minh Nương 10 Sinh Viên:Lê Thành Trung Luan van Đồ án tốt nghiệp đại học – Khóa 20117-2021 Trường Đại Học Bà Rịa Vũng Tàu c) Extension function Chức năng này có thể thêm một function (tạm dịch là chức năng) cho một class mà không cần kế thừa lại class đó.
Để hiểu rõ Extension là gì ta xem qua ví dụ dưới đây: // Extension function. Ý nghĩa của hàm là để lấy từ đầu tiên của câu fun String.getFirstWordOfSentences(): String = this.get(0) // Khai báo biến tên testSentences, giá trị là chuỗi "Kotlin is so cool" var testSentences = "Kotlin is so cool" testSentences.