Tải bản đầy đủ (.docx) (75 trang)

Xây dựng ứng dụng rèn luyện thể hình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.27 MB, 75 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 1

XÂY DỰNG ỨNG DỤNG RÈN LUYỆN THỂ HÌNH

GV HƯỚNG DẪN:
Th.S TRẦN ANH DŨNG

SV THỰC HIỆN:
PHẠM TRƯƠNG HẢI ĐOÀN - 20520046

TP. HỒ CHÍ MINH, 2023


LỜI CẢM ƠN
Sau quãng thời gian học tập và rèn luyện tại trường Đại học Công nghệ
Thông tin – ĐHQG TP.HCM, trong môn học ĐỒ ÁN 1, em quyết định chọn thực
hiện đề tài: XÂY DỰNG ỨNG DỤNG RÈN LUYỆN THỂ HÌNH nhằm củng cố,
tổng kết, cũng như nâng cao những kiến thức và kĩ năng mình đã học.
Để thực hiện được đồ án này, đầu tiên em xin được gửi lời cảm ơn chân
thành nhất đến thầy Trần Anh Dũng, giảng viên hướng dẫn của đồ án, đã tận tình hỗ
trợ, đánh giá và định hướng cho em trong suốt quá trình làm đồ án. Những gì em
học được qua q trình làm việc với thầy khơng chỉ có ý nghĩa lớn với sự hoàn
thành của đồ án mà cịn là những bài học q báu cho q trình học tập và làm việc
sau này.
Đồng thời, em cũng xin gửi lời cảm ơn đến các quý thầy cô trường Đại học
Cơng nghệ thơng tin nói chung và các q thầy cơ khoa Cơng nghệ phần mềm nói


riêng đã giảng dạy, bồi dưỡng kiến thức và kĩ năng cho em trong suốt quãng thời
gian em học tại trường.
Cuối cùng, em muốn gửi lời cảm ơn đến gia đình, bạn bè đã thấu hiểu, hỗ trợ
em về mặt tinh thần cũng như có các góp ý rất chân thật, thực tế để đồ án ngày một
hồn thiện.
Trong q trình làm đồ án khơng tránh khỏi được những sai sót, em kính
mong nhận được sự chỉ dẫn và góp ý của quý thầy cơ để hồn thiện và phát triển
thêm.
Một lần nữa, em xin chân thành cảm ơn!

Thành phố Hồ Chí Minh, 23 tháng 06 năm 2023
Sinh viên


PHẠM TRƯƠNG HẢI ĐOÀN


MỤC LỤC
TÓM TẮT ĐỒ ÁN....................................................................................................1
Chương 1.

MỞ ĐẦU...........................................................................................2

1.1. Lý do chọn đề tài..........................................................................................2
1.2. Mục đích nghiên cứu....................................................................................3
1.2.1.

Khách quan........................................................................................3

1.2.2.


Chủ quan............................................................................................3

1.3. Đối tượng nghiên cứu..................................................................................3
1.3.1.

Đối tượng công nghệ..........................................................................3

1.3.2.

Đối tượng sử dụng..............................................................................4

1.4. Phạm vi nghiên cứu......................................................................................4
1.4.1.

Phạm vi môi trường............................................................................4

1.4.2.

Phạm vi chức năng.............................................................................4

Chương 2.

CƠ SỞ LÝ THUYẾT.........................................................................6

2.1. Android........................................................................................................6
2.1.1.

Hệ điều hành Android........................................................................6


2.1.2.

Ngơn ngữ lập trình Kotlin..................................................................7

2.1.3.

Jetpack Compose................................................................................7

2.1.4.

Lập trình bất đồng bộ với Flow, Coroutine........................................8

2.1.4.1. Lập trình bất đồng bộ.....................................................................8
2.1.4.2. Coroutine........................................................................................8
2.1.4.3. Flow...............................................................................................9
2.2. Firebase........................................................................................................9


2.2.1.

Cloud Firestore...................................................................................9

2.2.2.

Firebase Authentication...................................................................10

2.2.3.

Cloud Storage cho Firebase..............................................................10


2.3. Full-text search với Algolia........................................................................10
2.3.1.

Full-text search.................................................................................10

2.3.2.

Algolia.............................................................................................11

2.4. FoodData Central API................................................................................12
Chương 3.

PHÂN TÍCH, THIẾT KẾ HỆ THỐNG............................................13

3.1. Phân tích Use Case.....................................................................................13
3.1.1.

Sơ đồ Use Case................................................................................13

3.1.2.

Danh sách tác nhân..........................................................................13

3.1.3.

Danh sách Use Case.........................................................................13

3.1.4.

Đặc tả Use Case...............................................................................15


3.2. Sơ đồ Sequence..........................................................................................28
3.3. Sơ đồ Activity............................................................................................32
3.4. Kiến trúc hệ thống......................................................................................38
3.4.1.

Sơ đồ tổng quan...............................................................................38

3.4.2.

Mô tả kiến trúc.................................................................................38

3.5. Thiết kế Cơ sở dữ liệu................................................................................39
3.5.1.

Sơ đồ Cơ sở dữ liệu tổng quan.........................................................39

3.5.2.

Mô tả Cơ sở dữ liệu..........................................................................39

3.6. Thiết kế Giao diện người dùng...................................................................41
3.6.1.

Danh sách màn hình.........................................................................43

3.6.2.

Mơ tả chi tiết các Màn hình..............................................................45



3.6.2.1. Màn hình Đăng ký........................................................................45
3.6.2.2. Màn hình Đăng nhập....................................................................46
3.6.2.3. Màn hình Trang chủ.....................................................................47
3.6.2.4. Màn hình Lịch sử tập luyện..........................................................48
3.6.2.5. Màn hình Chi tiết buổi tập............................................................50
3.6.2.6. Màn hình Ghi chép thơng tin buổi tập..........................................51
3.6.2.7. Màn hình Danh sách bài tập.........................................................52
3.6.2.8. Màn hình Chi tiết bài tập..............................................................53
3.6.2.9. Màn hình Thêm bài tập Custom...................................................54
3.6.2.10. Màn hình Danh sách chương trình tập........................................55
3.6.2.11. Màn hình Thêm mới chương trình tập........................................56
3.6.2.12. Màn hình Lịch sử ăn uống..........................................................58
3.6.2.13. Màn hình Danh sách thực phẩm.................................................59
3.6.2.14. Màn hình Chi tiết thực phẩm......................................................60
3.6.2.15. Màn hình Điều chỉnh Profile......................................................61
3.6.2.16. Màn hình Ghi chép số đo cơ thể.................................................62
Chương 4.

KẾT LUẬN......................................................................................64

4.1. Thành quả..................................................................................................64
4.2. Hạn chế......................................................................................................64
4.3. Hướng phát triển........................................................................................64
TÀI LIỆU THAM KHẢO.......................................................................................65


DANH MỤC HÌNH
Hình 2.1. Logo Android, bản quyền được nắm giữ bởi Google (Nguồn: Wikimedia
Commons).................................................................................................................6

Hình 2.2. Logo ngơn ngữ lập trình Kotlin (Nguồn: Wikimedia Commons)..............7
Hình 2.3. Logo Firebase (Nguồn: Wikimedia Commons).........................................9
Hình 2.4. Logo Algolia (Nguồn: Wikipedia)...........................................................11
Hình 2.5. Logo của USDA - Bộ Nơng nghiệp Hoa Kỳ (Nguồn: Wikimedia
Commons)...............................................................................................................12
Hình 3.1. Sơ đồ Use Case tổng quan.......................................................................13
Hình 3.2 Sơ đồ Sequence cho Use Case Đăng ký....................................................28
Hình 3.3. Sơ đồ Sequence cho Use Case Xem lịch sử tập luyện.............................28
Hình 3.4. Sơ đồ Sequence cho Use Case Ghi chép một buổi tập.............................29
Hình 3.5. Sơ đồ Sequence cho Use Case Xem danh sách chương trình tập.............30
Hình 3.6. Sơ đồ Sequence cho Use Case Tạo chương trình tập...............................30
Hình 3.7. Sơ đồ Sequence cho Use Case Ghi chép một ngày ăn.............................31
Hình 3.8. Sơ đồ Sequence cho Use Case Theo dõi sự tiến bộ..................................32
Hình 3.9. Sơ đồ Activity của Use Case Xem lịch sử tập luyện................................32
Hình 3.10. Sơ đồ Activity cho Use Case Ghi chép một buổi tập.............................33
Hình 3.11. Sơ đồ Activity cho Use Case Xem danh sách Chương trình tập............33
Hình 3.12. Sơ đồ Activity cho Use Case Tạo chương trình tập...............................34
Hình 3.13. Sơ đồ Activity cho Use Case Ghi chép một ngày ăn..............................35
Hình 3.14. Sơ đồ Activity cho Use Case chỉnh sửa Profile.....................................36
Hình 3.15. Sơ đồ Activity cho Use Case Theo dõi sự tiến bộ..................................37
Hình 3.16. Sơ đồ kiến trúc tổng quan......................................................................38
Hình 3.17. Sơ đồ Cơ sở dữ liệu tổng quan...............................................................39
Hình 3.18. Màn hình Đăng ký.................................................................................45
Hình 3.19. Màn hình Đăng nhập.............................................................................46
Hình 3.20. Màn hình Trang chủ...............................................................................47
Hình 3.22. Màn hình Lịch sử tập luyện...................................................................48

1



Hình 3.23. Màn hình Chi tiết buổi tập.....................................................................50
Hình 3.24. Màn hình Đăng ký.................................................................................51
Hình 3.25. Màn hình Danh sách bài tập...................................................................52
Hình 3.26. Màn hình Chi tiết bài tập.......................................................................53
Hình 3.27. Màn hình Thêm bài tập Custom.............................................................54
Hình 3.28. Màn hình Danh sách chương trình tập...................................................55
Hình 3.29. Màn hình Thêm mới chương trình tập...................................................56
Hình 3.30. Màn hình Lịch sử ăn uống.....................................................................58
Hình 3.31. Màn hình Danh sách thực phẩm............................................................59
Hình 3.32. Màn hình Chi tiết thực phẩm.................................................................60
Hình 3.33. Màn hình Điều chỉnh Profile..................................................................61
Hình 3.34. Màn hình Đăng ký.................................................................................62

2


DANH MỤC BẢNG
Bảng 3.1. Danh sách tác nhân..................................................................................13
Bảng 3.2. Danh sách Use Case................................................................................15
Bảng 3.3. Đặc tả Use Case Đăng ký........................................................................16
Bảng 3.4. Đặc tả Use Case Đăng nhập....................................................................16
Bảng 3.5. Đặc tả Use Case Xem lịch sử tập luyện...................................................17
Bảng 3.6. Đặc tả Use Case Ghi chép một buổi tập..................................................18
Bảng 3.7. Đặc tả Use Case Bắt đầu một buổi tập....................................................19
Bảng 3.8. Đặc tả Use Case Xem danh sách chương trình tập..................................20
Bảng 3.9. Đặc tả Use Case Tạo chương trình tập....................................................21
Bảng 3.10. Đặc tả Use Case Xem danh sách bài tập................................................22
Bảng 3.11. Đặc tả Use Case Tạo bài tập Custom.....................................................23
Bảng 3.12. Đặc tả Use Case Ghi chép một ngày ăn.................................................24
Bảng 3.13. Đặc tả Use Case Xem thông tin dinh dưỡng của thực phẩm..................24

Bảng 3.14. Đặc tả Use Case Chỉnh sửa Profile........................................................25
Bảng 3.15. Đặc tả Use Case Thêm số đo cơ thể......................................................26
Bảng 3.16. Đặc tả Use Case Theo dõi sự tiến bộ.....................................................27
Bảng 3.17. Mô tả Collection User...........................................................................40
Bảng 3.18.Mô tả Collection Food............................................................................40
Bảng 3.19. Mô tả Collection Routine......................................................................40
Bảng 3.20. Mô tả Collection EatingDay..................................................................41
Bảng 3.21. Mô tả Collection Workout.....................................................................41
Bảng 3.22. Mô tả Collection Exercise.....................................................................42
Bảng 3.23. Mô tả Collection DefaultMeasurements................................................42
Bảng 3.24. Mô tả Collection Exercise.....................................................................42
Bảng 3.25. Mô tả Collection Exercise.....................................................................43
Bảng 3.26. Danh sách các màn hình........................................................................44
Bảng 3.27. Mơ tả Màn hình Đăng ký......................................................................46
Bảng 3.28. Mơ tả Màn hình Đăng nhập...................................................................47

1


Bảng 3.29. Mơ tả Màn hình Trang chủ....................................................................48
Bảng 3.30. Mơ tả Màn hình Lịch sử tập luyện.........................................................49
Bảng 3.31. Mơ tả Màn hình Chi tiết buổi tập..........................................................50
Bảng 3.32. Mơ tả Màn hình Ghi chép thơng tin buổi tập.........................................52
Bảng 3.33. Mơ tả Màn hình Danh sách bài tập........................................................53
Bảng 3.34. Mơ tả Màn hình Chi tiết bài tập.............................................................54
Bảng 3.35. Mơ tả Màn hình Thêm bài tập Custom..................................................55
Bảng 3.36. Mơ tả Màn hình Danh sách chương trình tập........................................56
Bảng 3.37. Mơ tả Màn hình Thêm mới chương trình tập........................................57
Bảng 3.38. Mơ tả Màn hình Lịch sử ăn uống..........................................................59
Bảng 3.39. Mơ tả Màn hình Danh sách thực phẩm..................................................59

Bảng 3.40. Mơ tả Màn hình Chi tiết thực phẩm.......................................................60
Bảng 3.41. Mơ tả Màn hình Điều chỉnh Profile.......................................................62
Bảng 3.42. Mơ tả Màn hình Ghi chép số đo cơ thể..................................................63

2


DANH MỤC TỪ VIẾT TẮT

Từ viết tắt
API

Từ đầy đủ

Ý nghĩa

Application
Programming Interface

FDC

FoodData Central

JVM

Java Virtual Machine

Giao diện lập trình ứng dụng
Bộ dữ liệu về dinh dưỡng, thực phẩm
phát triển bởi USDA

Máy ảo Java cho phép chạy chương
trình Java
Tập hợp các trình biên dịch và công
nghệ cho phép phát triển frontend,

LLVM

backend cho bất kỳ ngơn ngữ lập trình,
kiến trúc nào

SaaS

Software as a service

Phần mềm dạng dịch vụ

UI

User Interface

Giao diện người dùng

USDA

U.S. Department of

Bộ Nông nghiệp Hoa Kỳ

Agriculture


1


TÓM TẮT ĐỒ ÁN
Hiện nay, nhu cầu rèn luyện sức khỏe ngày một tăng cao do sự phát triển của
công nghệ khiến con người ngồi một chỗ nhiều và ít vận động.
Trong đó, chăm sóc sức khỏe thơng qua các hoạt động tập luyện
thể hình và điều chỉnh chế độ dinh dưỡng là cực kỳ phổ biến. Tuy
nhiên, phần lớn các ứng dụng thường chỉ tập trung vào 1 khía
cạnh, tập luyện hoặc dinh dưỡng. Đồng thời, phần lớn các ứng
dụng hướng tới những người ít kinh nghiệm và cần rất nhiều sự chỉ
dẫn từ ứng dụng, còn các ứng dụng cho những người đã tập được
một thời gian và chỉ cần ứng dụng với vai trị hỗ trợ thì lại rất ít.
Từ đó, ứng dụng Stren, được xây dựng với Android Native,
Algolia, Firebase, ra đời nhằm tích hợp quản lý việc tập luyện và
ăn uống, cũng như phục vụ cho nhu cầu của nhóm người dùng đã
có kinh nghiệm tập luyện và ăn uống nói trên. Ứng dụng hỗ trợ các
chức năng:
-

Ghi chép việc tập luyện.

-

Xem lịch sử tập luyện.

-

Bắt đầu một buổi tập (có đồng hồ bấm giờ tự động để
canh quãng thời gian nghĩ giữa hiệp).


-

Xem thông tin, tìm kiếm, lọc các bài tập.

-

Tạo, chỉnh sửa các chương trình tập.

-

Ghi chép việc ăn uống theo từng ngày.

-

Xem thơng tin, tìm kiếm, lọc các thực phẩm.

-

Ghi chép các số đo cơ thể.

-

Theo dõi sự tiến bộ của bản thân theo thời gian.

1


Sau quá trình tìm hiểu và nghiên cứu, em đã xây dựng được
một ứng dụng hồn chỉnh, đầy đủ tính năng cần thiết, và báo cáo

này sẽ trình bày các kết quả đạt được sau quá trình trên.

2


Chương 1. MỞ ĐẦU
1.1.

Lý do chọn đề tài

Từ trước đến nay, sức khỏe đã ln đóng một vai trị mật thiết trong cuộc
sống của mỗi người bởi lẽ sức khỏe ảnh hưởng trực tiếp đến mọi khía cạnh trong
cuộc sống của con người, từ công việc, học tập, cho đến đời sống tinh thần. Trong
đó, hoạt động thể chất và dinh dưỡng là hai thành tố quan trọng trong việc quyết
định một người có khỏe mạnh hay khơng. [ CITATION And231 \l 1033 ]
[ CITATION And23 \l 1033 ][ CITATION Fir23 \l 1033 ][ CITATION Fir232 \l
1033 ][ CITATION Fir231 \l 1033 ][ CITATION Kot23 \l 1033 ][ CITATION
Kot231 \l 1033 ][ CITATION Mon23 \l 1033 ][ CITATION Wik232 \l 1033 ]
[ CITATION Wik23 \l 1033 ][ CITATION Wik233 \l 1033 ][ CITATION Wik231 \
l 1033 ][ CITATION USD23 \l 1033 ]
Dần dà, việc rèn luyện thể chất không chỉ dừng lại ở mức bảo đảm sức khỏe
mà còn là một hình thức phát triển bản thân, người tập luyện khơng chỉ tập để có
sức khỏe mà cịn để khỏe hơn, đẹp hơn, tốt hơn. Do đó các phịng gym và các dịch
vụ PT (Personal Trainer – HLV cá nhân) nở rộ lên và được nhiều người đón nhận.
Tuy nhiên đối với những người đã tập được một thời gian và có đủ kiến thức, định
hướng cho mình, hay đơn giản là muốn tự mình nắm rõ quá trình tập luyện thì họ
khơng cần q nhiều sự kèm cặp, hướng dẫn như trong các chương trình PT. Thay
vào đó, cái họ cần là sự trợ giúp trong những việc đáng lẽ sẽ mất nhiều thời gian
nếu họ tự làm mà khơng có sự hỗ trợ nào: ghi chép q trình rèn luyện, quan sát sự
tiến bộ của bản thân, quản lý các mục tiêu, tìm kiếm thơng tin…

Để giải quyết vấn đề trên, em quyết định chọn đề tài Xây dựng ứng dụng
rèn luyện thể hình, nhằm cung cấp một giải pháp chuyên hỗ trợ những người rèn
luyện thể hình trong quá trình tập luyện, ăn uống của họ. Ứng dụng cho phép họ có
cái nhìn tổng qt cũng như chi tiết về quá trình rèn luyện của bản thân để có thể dễ
dàng điều chỉnh chương trình tập cũng như chế độ dinh dưỡng. Đồng thời, ứng

3


dụng cũng cung cấp nhiều tiện ích khác để hỗ trợ người dùng trong suốt q trình
tập luyện.
1.2.

Mục đích nghiên cứu

1.2.1. Khách quan
- Đáp ứng nhu cầu của những người dùng đã có kiến thức và kinh
nghiệm trong việc tập luyện, ăn uống và mong muốn tự quản lý, ghi
chép việc tập luyện cũng như ăn uống của bản thân.
- Cung cấp một giải pháp chung cho cả việc quản lý quá trình tập luyện
và ăn uống, để người dùng không phải tải quá nhiều ứng chỉ để quản
lý cả 2 khía cạnh.
1.2.2. Chủ quan
- Nghiên cứu, áp dụng các best practice, các kĩ thuật trong việc lập trình
Android vào đề tài: phân chia package, quản lý resource, thiết kế kiến
trúc ứng dụng…
- Nghiên cứu, áp dụng các thư viện phổ biến trong lập trình Android:
o UI: Jetpack Compose
o Dependency Injection: Hilt
o Testing: JUnit, Espresso

o Asynchronous Programming: Flow, Coroutine
o APIs Calls: Retrofit
- Nghiên cứu, áp dụng các tính năng mới, tối ưu của ngơn ngữ lập trình
Kotlin: extension functions, higher-order functions, sealed class, data
class, function type…
1.3.

Đối tượng nghiên cứu

1.3.1. Đối tượng cơng nghệ
- Lập trình Android:

4


o Thiết kế giao diện người dùng: Jetpack Compose
o Ngôn ngữ lập trình: Kotlin
o Kiến trúc ứng dụng: MVVM
o Lập trình bất đồng bộ: Flow, Coroutine
o Giao tiếp với backend qua RESTful API: Retrofit
- Backend:
o Cơ sở dữ liệu: Firestore
o Lưu trữ file: Firebase Storage
o Xác thực: Firebase Authentication
o Full-text search: Algolia
o Nguồn dữ liệu về thực phẩm: FDC API
1.3.2. Đối tượng sử dụng
Những người rèn luyện thể hình có nhu cầu ghi chép, quan sát, quản
lý quá trình tập luyện, ăn uống của bản thân.
1.4.


Phạm vi nghiên cứu

1.4.1. Phạm vi môi trường
Ứng dụng di động sử dụng hệ điều hành Android.
1.4.2. Phạm vi chức năng
Ứng dụng cho phép người dùng:
- Ghi chép, thêm mới, chỉnh sửa thông tin của một buổi tập.
- Xem lịch sử tập luyện theo từng ngày.
- Bắt đầu một buổi tập (có đồng hồ bấm giờ tự động để canh
quãng thời gian nghĩ giữa hiệp).
- Xem thơng tin, tìm kiếm, lọc các bài tập theo phân loại, nhóm cơ
được tập.

5


- Tạo, chỉnh sửa các chương trình tập, bắt đầu nhanh một buổi tập
với một chương trình tập bất kỳ.
- Ghi chép việc ăn uống theo từng ngày và theo dõi lượng calo,
lượng chất dinh dưỡng tiêu thụ theo từng ngày.
- Xem thơng tin, tìm kiếm các thực phẩm.
- Ghi chép các số đo thể chất của cơ thể (cân nặng, chiều cao,...) .
- Theo dõi sự thay đổi về mặt thể chất, tập luyện, dinh dưỡng của
bản thân trong các khoảng thời gian.

6


Chương 2. CƠ SỞ LÝ THUYẾT

2.1.

Android

2.1.1. Hệ điều hành Android

Hình 2.1. Logo Android, bản quyền được nắm giữ bởi Google
(Nguồn: Wikimedia Commons)

Android là một hệ điều hành mã nguồn mở dựa trên nền tảng Linux
kernel, được phát triển chủ yếu cho các thiết bị có màn hình cảm ứng (điện
thoại thông minh, tablet, đồng hồ thông minh…).
Android được phát triển bởi một hiệp hội các nhà phát triển ứng dụng
được gọi là Open Handset Alliance, mặc dù phiên bản được sử dụng rộng rãi
nhất chủ yếu do Google phát triển. Android được công bố vào tháng 11 năm
2007, với thiết bị Android thương mại đầu tiên, HTC Dream, được ra mắt
vào tháng 9 năm 2008.
Android là hệ điều hành phổ biến nhất trên toàn cầu dành cho điện
thoại kể từ 2011 đến nay và phổ biến nhất trên máy tính bảng từ năm 2013
đến nay. Tính đến tháng 5 năm 2021, Android có hơn 3 tỷ người dùng hoạt
động hàng tháng và tính đến tháng 1 năm 2021, Google Play Store có hơn 3
triệu ứng dụng. Android 13, phát hành vào ngày 15 tháng 8 năm 2022, là
phiên bản mới nhất và Android 12.1/12L mới phát hành gần đây bao gồm
nhiều cải tiến dành riêng cho điện thoại gập, máy tính bảng, màn hình
desktop rời và Chromebook [ CITATION Wik23 \l 1033 ].

7


2.1.2. Ngơn ngữ lập trình Kotlin


Hình 2.2. Logo ngơn ngữ lập trình Kotlin (Nguồn: Wikimedia Commons)

Kotlin là ngơn ngữ lập trình high-level, sử dụng static type, có thể
phát triển đa nền tảng và được sử dụng cho nhiều mục tiêu khác nhau. Kotlin
được thiết kế để tương thích hồn tồn với Java và JVM, nhưng đồng thời
cũng có thể biên dịch thành JavaScript (ví dụ: đối với ứng dụng web sử dụng
React) hoặc native code thơng qua LLVM (ví dụ: đối với ứng dụng iOS). Chi
phí phát triển ngơn ngữ Kotlin do JetBrains bỏ ra, còn thương hiệu Kotlin do
Kotlin Foundation nắm giữ [ CITATION Wik231 \l 1033 ].
Kể từ ngày 7 tháng 5 năm 2019, Google công bố ngôn ngữ lập trình
Kotlin sẽ là ngơn ngữ chính cho việc phát triển ứng dụng Android, và đang
dần thay thế trình biên dịch Java tiêu chuẩn.
2.1.3. Jetpack Compose
Jetpack Compose là UI toolkit được đề xuất bởi Android để xây dựng
giao diện người dùng. Jetpack Compose đơn giản hóa và tăng tốc phát triển
giao diện người dùng trên Android bằng cách giảm thiểu lượng code và sử
dụng nhiều tính năng mạnh mẽ của Kotlin API. Đồng thời Jetpack Compose
có rất nhiều cơng cụ built-in để xây dựng theme, các UI Component, chế độ
tối. Đồng thời, Jetpack Compose có thể được sử dụng để phát triển giao diện
người dùng cho nhiều loại thiết bị di động khác nhau (điện thoại, đồng hồ
thông minh, máy tính bảng) [ CITATION And231 \l 1033 ].

8


2.1.4. Lập trình bất đồng bộ với Flow, Coroutine
2.1.4.1.

Lập trình bất đồng bộ

Lập trình bất đồng bộ (hay Asynchronous Programming) là

một kĩ thuật lập trình cho phép nhiều tác vụ được thực hiện đồng thời
mà không làm ảnh hưởng đến luồng chạy chính của chương trình, điều
này tạo cảm tưởng như các tác vụ ấy được chạy song song với luồng
chạy chính. Khi các tác vụ ấy hồn thành xong thì sẽ trả về kết quả
cho luồng chạy chính, đảm bảo cho việc luồng chạy chính khơng bị
“block” (bị đơng cứng, phải đợi có kết quả của các tác vụ mới được
chạy tiếp). Điều này giữ việc thực hiện chương trình được tối ưu và
trải nghiệm người dùng được tốt nhất.
Trong lập trình ứng dụng nói chung và lập trình Android nói
riêng, lập trình bất đồng bộ là cực kỳ quan trọng vì việc ứng dụng bị
đứng trong khi các tác vụ phức tạp, cần nhiều thời gian được thực thi
sẽ gây nhiều khó chịu cho người dùng.
Các phương pháp để cài đặt kĩ thuật này bao gồm: Xử lý đa
luồng (Multithreading), sử dụng Callback, sử dụng Promise/Future, sử
dụng các Reactive Extensions, sử dụng Coroutine…[ CITATION
Kot23 \l 1033 ]
2.1.4.2.

Coroutine
Hướng tiếp cận của ngơn ngữ lập trình Kotlin trong lập trình

bất đồng bộ là sử dụng Coroutine. Coroutine được dựa trên khái niệm
suspendable computations - ý tưởng cho rằng một hàm có thể tạm
dừng việc thực thi của nó tại một số thời điểm và tiếp tục sau đó. Một
coroutine có thể coi như một “lightweight thread”.
Một trong những ưu điểm lớn nhất của Coroutines là việc viết
non-blocking code (các đoạn code khơng block luồng chạy chính bằng


9



×