Android được công bá vào tháng 11 năm 2007, tổ chăc OHA Open Handset Alliance được thành lập với hơn 80 công ty trong lĩnh vực kỹ thuật điện tử bao gãm các công ty chuyên về phần căng, p
Trang 1ĀY BAN NHÂN DÂN THÀNH PHà Hâ CHÍ MINH
TR¯àNG CAO ĐÀNG BÁCH KHOA NAM SÀI GÒN
Ban hành kèm theo Quyết định số: 459/QĐ-NSG, ngày 31 tháng 08 năm 2022
của Hiệu trưởng Trường Cao Đẳng Bách Khoa Nam Sài Gòn
Thành phß Hồ Chí Minh, năm 2022
Trang 3MĀC LĀC
CH¯¡NG TRÌNH MÔN HàC/MÔĐUN 7
Bài 1: Tổng Quan VÁ Lập Trình Android 8
1.1 Gißi thiệu vß Android 8
1.2 Ki¿n trúc android 9
Bài 2: Cài đặt môi tr°áng phát triÃn āng dāng Android 11
2.1 Gi ßi thiệu Java JDK, Android SDK, Android Studio 11
2.2 Thi¿t l¿p môi tr±ßng phát trißn: 12
2.2.1 Yêu c¿u vß ph¿n cÿng và ph¿n mßm: 12
2.2.2 Cài đặt môi tr±ßng l¿p trình 13
2.3 Kh ßi đßng Android Studio 19
2.4 Ch±¡ng trình đ¿u tiên Hello World 23
Bài 3: Các thành phần āng dāng Android 30
3.1 Các thành ph¿n c¡ b¿n trong ÿng dÿng Android 30
3.2 Activity 33
3.2.1 Xây d ÿng Activity 33
3.2.2 Qu¿n lý tr¿ng thái Activity (Managing the Activity Lifecycle) 34
3.2.3 Vòng đßi cÿa Activity (Activity Lifecycle) 36
3.2.4 Đß ±u tiên trong ÿng dÿng 38
3.2.5 Thành ph¿n savedInstanceState 39
3.3 Giao diện Android Studio 42
3.3.1 Các c¿u hình quan trßng 42
3.3.2 Các màn hình th±ßng thao tác 43
3.3.3 C ¿u trúc cÿa mßt dÿ án Adroid 44
Bài 4: Layout và view c¢ bÁn 46
4.1 Layout trong Android 46
4.1.1 Frame Layout 47
4.1.2 Linear Layout 48
4.1.3 Table Layout 51
4.1.4 Relative Layout 52
4.1.5 GridLayout 54
Trang 44.1.6 ConstraintLayout 56
4.2 Hàm findViewById 60
4.3 View và ViewGroup 60
4.4 Các view c¡ b¿n trong Android 64
4.4.1 TextView 64
4.4.2 EditText 65
4.4.3 Button 65
4.4.4 Checkbox 66
4.4.5 RadioButton 67
4.4.6 ToggleButton và Switch 68
4.4.7 ImageView và ImageButton 68
Bài 5: Cÿa sổ thông báo (Dialog) trong Android 74
5.1 Toast 74
5.2 AlertDialog 75
5.3 List Dialog 76
5.4 Custom Dialog 77
5.5 Notification 80
Bài 6: ListView và RecyclerView trong Android 83
6.1 ListView 83
6.1.1 ListItem 83
6.1.2 Adapter 84
6.1.3 Thÿc hành t¿o ListView 85
6.2 RecyclerView 87
6.2.1 Gi ßi thiệu RecyclerView 87
6.2.2 Sÿ dÿng RecyclerView đß hißn thß danh sách 88
Bài 7: Intent 95
7.1 Gi ßi thiệu Intent 95
7.2 Truy ßn dÿ liệu b¿ng Intent 97
7.2.1 Truyßn dÿ liệu b¿ng Explicit Intent 97
7.2.2 Truyßn dÿ liệu b¿ng Implicit Intent 98
7.3 Intent Result (l ¿y l¿i k¿t qu¿ tÿ activity) 98
Bài 8: Asset và l°u trữ dữ liáu 100
8.1 Bß qu¿n lý asset 100
Trang 58.1.1 Gißi thiệu 100
8.1.2 Đßc dÿ liệu Asset 101
8.2 Shared Preferences 103
8.2.1 Gißi thiệu 103
8.2.2 L±u trÿ 103
8.2.3 Truy xu¿t 105
8.3 B ß nhß thi¿t bß 106
8.3.1 B ß l±u trÿ trong 106
8.3.2 Bß l±u trÿ ngoài 107
Bài 9: QuÁn lý dữ liáu vßi SQLite 110
9.1 Khái niệm c¡ sß dÿ liệu (database concepts) 110
9.2 Gi ßi thiệu SQLite 111
9.3 Xây dÿng c¡ sß dÿ liệu vßi SQLite 112
9.3.1 T¿o C¡ sß dÿ liệu 112
9.3.2 M ß C¡ sß dÿ liệu 113
9.3.3 Đóng C¡ sß dÿ liệu 114
9.4 Truy v¿n dÿ liệu 114
9.4.1 Truy v¿n (Query) 114
9.4.2 Qu¿n lý 116
9.5 S ¿p x¿p dÿ liệu 118
Bài 10: Content Provider 120
10.1 Gißi thiệu Content Provider 120
10.1.1 Content Provider 120
10.1.2 Content URI 121
10.1.3 ContentResolver 122
10.2 Xây dÿng Content Provider cho ÿng dÿng 124
10.2.1 V ¿n đß xây dÿng ContentProvider 124
10.2.2 Authority & UriMatcher 125
10.3 Truy v¿n dÿ liệu hệ thống vßi Content Provider 126
10.3.1 Các ph±¡ng thÿc đißu khißn Cursor 126
10.3.2 Truy v ¿n dÿ liệu hệ thống 127
Bài 11: Service, Broadcast Receivers 129
Trang 611.1.1 Gißi thiệu 129
11.1.2 T¿o Service 130
11.1.3 IntentService 133
11.2 Broadcast Receiver 133
Bài 12: Menu 136
12.1 Tổng quan vß menu trong Android 136
12.2 OptionMenu 136
12.2.1 Thao tác v ßi file XML 136
12.2.2 Thao tác vßi MainActivity.java 141
12.3 ContextMenu 143
Bài 13: Đóng gói āng dāng 147
13.1 Gi ßi thiệu 147
13.2 T¿o file keystore 147
13.3 Nhúng Keystore vào file apk 151
13.4 Chuy ßn file apk tÿ debug -> release 153
13.5 Submit Google Play 154
TÀI LIàU THAM KHÀO 170
Trang 7CH¯¡NG TRÌNH MÔN HàC/MÔĐUN
Tên môn hác/môđun: Phát triÃn āng dāng cho các thi¿t bß di đßng
Mã sß môn hác:
Thái gian thực hián môn hác: 90 giß, (Lý thuyết: 30 giß; Thực hành, thí nghiệm, thÁo luận,
bài tập: 58 giß; Kiểm tra: 2 giß)
- Kiến thăc cơ bÁn về lập trình Android
- Cách thiết lập được một project trên máy Áo và trên máy thật
2 Về kỹ năng:
- Viết được các ăng dÿng đơn giÁn ch¿y trên nền hệ điều hành Android
- TÁi các ăng dÿng đã viết lên Google Play
3 Về năng lực tự chā và trách nhiệm:
Rèn luyện lòng yêu nghề, tư thế tác phong công nghiệp, tính kiên trì, sáng t¿o trong công việc
Trang 8Bài 1: Tổng Quan VÁ Lập Trình Android
Mÿc tiêu:
- Trình bày được lịch sử phát triển cāa Android
- Giới thiệu kiến trúc Android
1.1 Gißi thiáu vÁ Android
Android là hệ điều hành di động dựa trên nền tÁng cāa Linux kernel và phần mềm mã nguãn má, được thiết kế chā yếu cho các thiết bị di động có màn hình cÁm ăng như điện tho¿i thông minh, máy tính bÁng, đãng hã thông minh,
Android Inc được thành lập bái Andy Rubin, Rich Miner, Nick Sears và Chris White t¿i California năm 2003 với sự hỗ trợ tài chính cāa Google Và đến năm 2005, Google mua l¿i Android Inc và bắt đầu nuôi ý tưáng tự sÁn xuất điện tho¿i di động
Android được công bá vào tháng 11 năm 2007, tổ chăc OHA (Open Handset Alliance) được thành lập với hơn 80 công ty trong lĩnh vực kỹ thuật điện tử bao gãm các công ty chuyên
về phần căng, phân phái thiết bị di động đến các công ty phần mềm, sÁn xuất chất bán dẫn…
Có thể kể đến một sá công ty nổi tiếng như Samsung, Motorola, LG, HTC, T-Mobile, Vodafone, ARM và Qualcomm…
9/2008, Google ra mắt chiếc di động đầu tiên đãng thßi open source bÁn SDK (Software Development Kit) phiên bÁn 1.0 HTC Dream là điện tho¿i đầu tiên được bán vào ngày 22/10/2008
Android là phần mềm mã nguãn má Android (AOSP), được cấp phép chā yếu theo Apache License Tuy nhiên, hầu hết các thiết bị Android đều được cài đặt sẵn phần mềm độc quyền bổ sung, đáng chú ý nhất là Dịch vÿ di động cāa Google (GMS) bao gãm các ăng dÿng cát lõi như Google Chrome, nền tÁng phân phái kỹ thuật sá Google Play và nền tÁng phát triển Dịch vÿ Google Play được liên kết KhoÁng 70% điện tho¿i thông minh Android ch¿y hệ sinh thái cāa Google; các hệ sinh thái Android c¿nh tranh và fork bao gãm Fire
OS (do Amazon phát triển) hoặc LineageOS Tuy nhiên, tên và biểu trưng <Android=
Trang 9là thương hiệu cāa Google áp đặt các tiêu chuẩn để h¿n chế các thiết bị chưa được chăng nhận bên ngoài hệ sinh thái cāa họ sử dÿng thương hiệu Android
Mã nguãn đã được sử dÿng để phát triển các biến thể cāa Android trên một lo¿t các thiết bị điện tử khác, chẳng h¿n như bÁng điều khiển trò chơi, máy Ánh kỹ thuật sá, máy nghe nh¿c di động, PC và các lo¿i khác, mỗi lo¿i đều có giao diện ngưßi dùng chuyên biệt Một sá sÁn phẩm phái sinh nổi tiếng bao gãm Android TV cho TV và Wear OS cho thiết bị đeo, cÁ hai đều do Google phát triển Các gói phần mềm trên Android, sử dÿng định d¿ng APK, thưßng được phân phái thông qua các cửa hàng ăng dÿng độc quyền như Google Play Store, Samsung Galaxy Store, Huawei AppGallery, Cafe Bazaar và GetJar, hoặc các nền tÁng
mã nguãn má như Aptoide hoặc F-Droid
Android là hệ điều hành bán ch¿y nhất trên toàn thế giới trên điện tho¿i thông minh kể
từ năm 2011 và trên máy tính bÁng kể từ năm 2013 Quý 3 năm 2012 Android chiếm 75% thị phần điện tho¿i thông minh trên toàn thế giới với 500 triệu thiết bị được kích ho¿t
Tính đến tháng 5 năm 2017, có hơn hai tỷ ngưßi dùng kích ho¿t hàng tháng, nền tÁng được cài đặt lớn nhất trong sá bất kỳ hệ điều hành nào và tính đến tháng 1 năm 2021, Google Play Store có hơn 3 triệu ăng dÿng Phiên bÁn ổn định hiện t¿i là Android 11, phát hành vào ngày 8 tháng 9 năm 2020
Để lập trình với Android, cần có kiến thăc cơ bÁn về Java và lập trình hướng đái tượng
1.2 Ki¿n trúc android
Có thể hiểu Android Software Stack bao gãm nhân Linux, tập các thư viện C/C++ được truy xuất bái tầng ăng dÿng để sử dÿng các dịch vÿ, các bộ quÁn lý thực thi và quÁn lý ăng dÿng Mỗi tầng đều có chăc năng vai trò riêng biệt với nhau:
Linux kernel – lõi chính cāa toàn hệ tháng bao gãm các điều khiển phần căng, bộ quÁn lý xử lý và bộ nhớ, bÁo mật, kết nái m¿ng, bộ quÁn lý năng lượng
Trang 10 Libraries – thực thi trên tầng nhân Linux, bao gãm các thư viện lõi khác nhau cāa C/C++ như libc và SSL Có các d¿ng sau:
Thư viện hổ trợ phát các tập tin đa truyền thông
Bộ quÁn lý hiển thị
Thư viện hổ trợ đã họa OpenGL 2D và 3D
SQLite hổ trợ lưu trữ cơ sá dữ liệu
SSL và WebKit cho phép tương tác với trình duyệt và bÁo mật Internet
Android Run Time – đây chính là điểm làm nên sự khác biệt giữa thiết bị Android và thiết bị Linux Bên trong thành phần này bao gãm máy Áo Dalvik và thư viện lõi Android Run Time ngoài tăng tác độ cho ăng dÿng còn làm nền cho tầng Application Framework kết nái đến
Core Libraries – mặc dù hầu hết các ăng dÿng Android viết bằng ngôn ngữ Java nhưng Dalvik không phÁi là máy Áo Java Các thư viện lõi Android sẽ cung cấp hầu
Trang 11hết các chăc năng chính có thể có trong thư viện Java cũng như thư viện riêng biệt cāa Android
Dalvik VM – d¿ng máy Áo cho phép tái ưu hóa để có thể ch¿y được nhiều tiến trình một các hiệu quÁ, dựa trên nhân Linux các máy Áo cho phép quÁn lý các tiểu trình
và quÁn lý bộ nhớ á bậc thấp
Application Framework – cung cấp các lớp cho việc t¿o ra các ăng dÿng Bên c¿nh đó
nó cũng chăa các lớp trừu tượng cho phép truy nhập phần căng, quÁn lý giao diện ngưßi dùng
và tài nguyên cāa ăng dÿng
Application Layer – gãm các ăng dÿng được tích hợp sẵn và các ăng dÿng cāa hãng thă ba Tầng ăng dÿng trong Android Run Time sử dÿng các lớp từ tầng Application Framework để thực thi ăng dÿng
Mÿc tiêu:
- Biết được môi trưßng phát triển ăng dÿng Android
- Cài đặt được môi trưßng phát triển ăng dÿng Android
2.1 Gißi thiáu Java JDK, Android SDK, Android Studio
Android SDK (Software Development Kit) và JDK (Java Development Kit) là hai công
cÿ cần thiết để chúng ta có thể lập trình nên các ăng dÿng Android Sử dÿng công cÿ IDE (Integrated development environment) để lập trình sẽ rất hữu ích và tiện lợi Eclipse được xem
là một công cÿ hỗ trợ rất tát trong việc lập trình ăng dÿng Android
Android SDK, JDK và Eclipse đều có mặt trên một sá phiên bÁn hệ điều hành Windows, Mac OS và Linux do đó chúng ta có thể lập trình trên hệ điều hành mà chúng ta đã quen sử dÿng Thêm nữa, Android được thực thi trên máy Áo Dalvik nên việc phát triển ăng dÿng là như nhau trên cÁ 3 môi trưßng
Trang 12Android Studio được Google chính thăc phát hành phiên bÁn đầu tiên Android Studio 0.1 vào tháng 5/ 2013 (Phiên bÁn hiện nay là 4.2 – phát hành vào tháng 5/2021) Là công cÿ lập trình dựa trên nền IntelliJ, cung cấp các tính năng m¿nh mẽ hơn ADT như:
Hỗ trợ xây dựng dự án d¿ng Gradle.
Hỗ trợ sửa lỗi nhanh và tái sử dÿng cấu trúc phương thăc.
Cung cấp các công cÿ kiểm tra tính khÁ dÿng, khÁ năng họat động cāa ăng dÿng, tương thích nền tÁng…
Hỗ trợ bÁo mật mã nguãn và đóng gói ăng dÿng.
Trình biên tập giao diện cung cấp tổng quan giao diện ăng dÿng và các thành phần, cho phép tuỳ chỉnh trên nhiều cấu hình khác nhau.
Cho phép tương tác với nền Google Cloud.
Với mÿc tiêu t¿o ra môi trưßng phát triển tất cÁ trong một, trÁi nghiệm nhanh và mượt hơn các IDE khác, Android Studio không ngừng ra đßi các phiên bÁn cÁi tiến
2.2 Thi¿t lập môi tr°áng phát triÃn:
2.2.1 Yêu cầu vÁ phần cāng và phần mÁm:
Như đã nói á trên, ăng dÿng Android được thực thi trên máy Áo Dalvik nên chúng ta
có thể lập trình trên nhiều phiên bÁn cāa các hệ điều hành Cÿ thể như sau:
Microsoft® Windows® 8/7/Vista/2003 (32 hoặc 64-bit)
4 GB RAM trá lên
Dung lượng ổ đĩa ăng còn tráng ít nhất 400 MB
Ít nhất 1 GB cho Android SDK, emulator system images và caches
Độ phân giÁm tái thiểu 1280 x 800
Java Development Kit (JDK) 7 trá lên
Tùy chọn thêm cho accelerated emulator: hỗ trợ bộ xử lý Intel® với các phiên bÁn: Intel® VT-x, Intel® EM64T (Intel® 64), và tính năng Execute Disable (XD) Bit
Trang 132.2.2 Cài đặt môi tr°áng lập trình:
Để bắt đầu viết ăng dÿng với Android Studio, chúng ta cần tÁi và cài đặt hai bộ phần mềm sau:
Java JDK:
Bước 1: Kiểm tra cấu hình máy để chọn tÁi phiên bÁn JDK phù hợp
o Vào Control Panel\System and Security\System
o Xác định Hệ điều hành và bit (Trong hình dưới là Hệ điều hành Windows 7,
64 bit)
Bước 2: TÁi bÁn JDK phù hợp với cấu hình máy xác định á bước 1
o Vào link https://www.oracle.com/java/technologies/javase-downloads.html để
chọn phiên bÁn JDK Chọn JDK Download trong giao diện (giao diện có thể
khác nhau theo thßi gian)
Trang 14o Phiên bÁn mới nhất sẽ được cập nhật lên hàng đầu (nên chọn phiên bÁn mới nhất) Chọn phiên bÁn phù hợp với cấu hình máy và nhấn vào file trong cột Download để tÁi
o Check vào ô để xác nhận chấp nhận các điều khoÁn cāa Oracle và nhấn nút Download …
Bước 3: Cài đặt JDK
o Ch¿y tập tin đã tÁi á bước 2, nhấn Next để cài đặt:
Trang 15o T¿i giao diện này, nếu ngưßi dùng muán thay đổi vị trí cài đặt thì chọn nút Change…, nhấn Next để tiếp tÿc
o Quá trình cài đặt kết thúc khi giao diện thông báo hoàn tất xuất hiện, nhấn nút Close
Trang 16L°u ý: Khi cần kiểm tra JDK trong máy đã được cài hay chưa, vào Control
Panel\Programs\Programs and Features nếu thấy biểu tượng Java như hình dưới là đã được cài
Android Studio:
Android Studio cung cấp các công cÿ để xây dựng ăng dÿng trên mọi thiết bị Android một cách nhanh nhất
Bước 1: TÁi Android Studio
o Vào link https://developer.android.com/studio/
o Chọn Download Android Studio và chấp nhận điều khoÁn để tÁi gói Android Studio về máy tính
Trang 17Bước 2: Cài đặt Android Studio
o Ch¿y tập tin android-studio vừa tÁi á bước 1 để tiến hành cài đặt Android Studio Màn hình Welcome to Android Studio Setup xuất hiện, nhấn Next:
o Lựa chọn tất cÁ các tùy chọn (options)
Android SDK (software development kit) là một tập hợp các công cÿ được sử dÿng để phát triển ăng dÿng cho Android Android SDK bao gãm:
Trang 182 Bộ dò lỗi (Debugger)
3 Thiết bị giÁ lập (emulator)
4 Các tài liệu liên quan cho Android API
5 Các đo¿n code mẫu
6 Các hướng dẫn cho hệ điều hành Android
Android Virtual Device (AVD) là một thiết bị cấu hình, nó ch¿y với bộ giÁ lập Android (Android emulator) Nó làm việc với bộ giÁ lập để cung cấp một môi trưßng thiết bị Áo cÿ thể, để cài đặt và ch¿y ăng dÿng Android
o Chọn thư mÿc cài đặt:
Android Studio Installation Location: D:\DevPrograms\Android\Android Studio Android SDK Install Location: D:\DevPrograms\Android\sdk
Trang 192.3 Khởi đßng Android Studio:
Bước 1: Khái động ăng dÿng Android Studio
Trang 20nghiệm ăng dÿng trên trình giÁ lập (Emulator)
o Lựa chọn theme sáng hoặc tái:
o T¿i giao diện Setup Wizard, chọn các thành phần cần cài đặt:
Performance (Intel® HAXM): Cho phép phần căng hỗ trợ Áo hoá (hardware-assisted virtualization engine (hypervisor) để tăng tác độ ch¿y ăng dÿng Android trên máy tính phát triển ăng dÿng
Android Virtual Device: Thiết bị Android Áo được cấu hình sẵn và tái ưu hóa để thử
Trang 21Lựa chọn thư mÿc SDK đã cài đặt á phần cài đặt Android Studio Các thành
phần SDK mới sẽ được cập nhập vào thư mÿc này
Nếu máy tính được trang bị phần căng tát, bộ giÁ lập Android (Android Emulator) có thể ch¿y được trong chế độ tăng tác (Accelerated performance mode)
Cấu hình chỉ định sá lượng RAM tái đa dành cho bộ quÁn lý tăng tác phần căng (Intel Hardware Accelerated Manager – HAXM) (2GB)
Trang 23Ăng dÿng đã khái động xong, bây giß có thể viết chương trình đầu tiên.
2.4 Ch°¢ng trình đầu tiên Hello World
Theme cāa giao diện này là Darcula (tái)
Bước 1: Chọn Start a new Android Studio project để t¿o một ăng dÿng mới
Trang 24Bước 2: Chọn Empty Activity
Bước 3: Đặt tên (Name) cho ăng dÿng, chọn vị trí lưu (Save location), ngôn ngữ (Language) Java và chọn Minimum API Level
Minimum API Level sẽ là phiên bÁn Android thấp nhất mà ăng dÿng cāa b¿n hỗ trợ Minimum API Level cũng là một trong những tín hiệu mà Google Play sử dÿng để xác định thiết bị nào cāa ngưßi dùng có thể cài đặt một ăng dÿng Nên chọn thấp để ăng dÿng cāa b¿n có thể ch¿y được trên nhiều thiết bị nhất có thể
à đây chúng ta chọn API 15 nó sẽ hỗ trợ 100% các thiết bị Android hiện t¿i
Trang 25Giao diện chính cāa Android Studio:
Bước 4: T¿o máy Áo để ch¿y Project
o T¿i No devices, chọn Open AVD Manager:
Trang 26o Lựa chọn thiết bị:
Trang 27o Chọn API cho thiết bị:
Trang 28Bước 5: Ch¿y chương trình.
Trang 30Bài 3: Các thành phần āng dāng Android
Mÿc tiêu:
- Các thành phần cơ bÁn trong ăng dÿng Android
- Trình bày được kiến thăc về Activity và vòng đßi cāa nó
- Biết được chăc năng cāa các màn hình trong giao diện Android Studio
3.1 Các thành phần c¢ bÁn trong āng dāng Android
Trong một ăng dÿng Android thưßng chúng ta sẽ gặp 8 thành phần cơ bÁn sau:
Activity:
o Trong ăng dÿng Android, Activity đóng vai trò là một màn hình, nơi ngưßi
dùng có thể tương tác với ăng dÿng, ví dÿ: chÿp hình, xem bÁn đã, gửi mail…
o Một ăng dÿng có thể có một hoặc nhiều Activity, Activity được khái ch¿y đầu tiên khiăng dÿng ho¿t động được gọi là <MainActivity=
o Activity có thể hiển thị á chế toàn màn hình, hoặc á d¿ng cửa sổ với một kích thước nhất định
o Các Activity có thể gọi đến các Activity khác, Activity được gọi sẽ nhận được tương tác á thßi điểm đó
Intent:
o Intent là đái tượng mang thông điệp, cho phép t¿o ra các yêu cầu hành động
giữa các thành phần trong ăng dÿng, hoặc giữa các ăng dÿng với nhau
o Được sử dÿng nhiều trong 3 trưßng hợp sau:
Trang 31View: các điều khiển đơn lẻ
ViewGroup: tập hợp nhiều điều khiển đơn lẻ
Broadcast Receiver:
o Thành phần ăng dÿng cho phép truyền tÁi các thông báo trên ph¿m vi toàn hệ tháng Không có giao diện nhưng có thể thực hiện thông báo qua thanh tr¿ng thái
o Broadcast Receiver truyền thông báo á hai d¿ng:
Hệ tháng: các thông báo được truyền trực tiếp từ hệ tháng như: tắt màn hình, pinyếu, thay đổi kết nái…
Ăng dÿng: xây dựng các truyền thông báo đến các thành phần trong ăng dÿng như: khái động Service, tÁi nội dung đến ăng dÿng…
Service:
o Service được sử dÿng để thực thi các tác vÿ cần nhiều thßi gian, thực hiện
á chế độ ngầm và thưßng không cần giao diện hiển thị
o Service được ch¿y ngầm, tăc là ăng dÿng vẫn ch¿y nhưng không hiển thị giao diện tương tác
o Một sá tác vÿ cần thực hiện bằng Service:
Trình diễn các tập tin đa truyền thông như nh¿c, phim…
Kết nái và thực hiện tÁi các nội dung thông qua Internet
Truy xuất đọc ghi tập tin
Content Provider:
o Content Provider xây dựng cách thăc truy xuất tập hợp các dữ liệu ăng dÿng,
dữ liệu có thể lưu trữ á nhiều d¿ng như: SQLite, tập tin, tài nguyên Web hoặc bất kì thư mÿc lưu trữ nào
o Có thể sử dÿng Content Provider để xây dựng các ăng dÿng sử dÿng chung nguãn tài nguyên hoặc sử dung riêng
o Trong Android, một sá Content Provider được xây dựng sẵn:
Danh b¿
Tài nguyên đa truyền thông
Trang 32Lịch
Context:
o Context thuộc gói android.content (android.content.Context)
o Là một lớp cơ bÁn chăa hầu hết thông tin về môi trưßng ăng dÿng cāa android, có nghĩa là mọi thao tác, tương tác với hệ điều hành điều phÁi qua lớp này
o Nó cung cấp các phương thăc để các lớp khác có thể tương tác với hệ tháng Android
o Nó cho phép truy cập tới các nguãn tài nguyên (resources) đã được định nghĩa
và các lớp khác Có thể nói Context là một lớp á măc ăng dÿng (Application level- liên quan tới hệ tháng)
o Hầu hết các lớp có liên quan tới UI (layout, button, textview, imageview, listview, …) đều phÁi <super” tới Context vì bÁn thân Context đÁm nhiệm việc
truy cập tài nguyên (R.id, R.layout, …) Nếu chúng ta không tham chiếu tới lớp Context thì không thể dùng tới các tài nguyên mà chúng ta đã t¿o ra
o Tóm l¿i, Context giúp chúng ta dễ dàng truy cập và tương tác tới các tài nguyên cāa hệ tháng, các thông tin, các dịch vÿ (services), các thông sá cấu hình, dữ liệu, danh b¿, cuộc gọi, kết nái, chế độ rung (vibrator),
Notification:
o Thành phần cho phép gửi các thông báo đến ngưßi dùng mà không chiếm quá nhiều việc điều khiển cāa ngưßi dùng trên thiết bị Ví dÿ, khi nhận được một tin nhắn hay một thư điện tử, thiết bị sẽ sử dÿng Notification để thông báo ngưßi dùng thông qua nh¿c chuông, đèn nền, thể hiện biểu tượng trên thanh tác vÿ…
o Notification được xây dựng cho mÿc đích gửi các thông báo đến ngưßi dùng thông qua thanh tr¿ng thái
o Giao diện Notification không thuộc giao diện ăng dÿng, nhưng có thể tuỳ chỉnh giao diện Notification thông qua các phương thăc có sẵn
Trang 333.2 Activity
3.2.1 Xây dựng Activity
Trong một ăng dÿng Android thì ngưßi dùng thao tác với các Activity, một ăng dÿng có ít nhất một Activity Và trong lập trình, chúng ta cần chuyển đổi qua l¿i giữ các Activity với nhau đãng thßi truyền dữ liệu từ Activity trước sang Activity mới để có thể
xử lý
Mỗi Activity đ¿i diện cho một màn hình ăng dÿng Để t¿o Activity cho ăng
dÿng ta thực hiện theo các bước sau:
o T¿o mới lớp kế thừa từ lớp Activity
o Thực thi các phương thăc quÁn lý tr¿ng thái Activity
o Xây dựng giao diện trong tài nguyên res/layout
o Khai báo Activity trong tập tin AndroidManifest.xml
Ví dÿ:
Trang 34 Đăng kí Activity trong tập tin AndroidMannifest.xml:
3.2.2 QuÁn lý tr¿ng thái Activity (Managing the Activity Lifecycle)
Activity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ăng dÿng Android Hệ điều hành Android quÁn lý Activity theo d¿ng stack: khi một Activity mới được khái t¿o, nó sẽ được xếp lên đầu cāa stack và trá thành running activity, các Activity trước đó
sẽ bị t¿m dừng và chỉ ho¿t động trá l¿i khi Activity mới được giÁi phóng
Activity Stack: Tương tự như các ngôn ngữ lập trình khác, Activity Stack ho¿t động theo cơ chế LIFO (LAST IN FIRST OUT)
Mỗi một Activity mới được má lên nó sẽ á bên trên Activity cũ, để trá về Activity thì
public class MyFirstActivity extends Activity{
Trang 35chỉ cần nhấn nút <Back= để trá về hoặc viết lệnh Tuy nhiên nếu nhấn nút Home rãi thì sẽ không thể dùng nút <Back= để quay l¿i màn hình cũ được
Một Activity cơ bÁn có 4 tr¿ng thái:
o Active: Activity đang hiển thị trên màn hình (foreground)
o Paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus)
Ví dÿ: Một activity mới xuất hiện hiển thị giao diện đè lên trên activity cũ, nhưng giao diện này nhß hơn giao diện cāa activity cũ, do đó ta vẫn thấy được một phần giao diện cāa activity cũ nhưng l¿i không thể tương tác với nó
o Stopped: Activity bị thay thế hoàn toàn bái Activity mới sẽ tiến đến tr¿ng thái
Trang 363.2.3 Vòng đái cÿa Activity (Activity Lifecycle)
Trang 37public class MainActivity extends AppCompatActivity {
private static final String TAG = "State";
Bước 1: T¿o mới ăng dÿng, đặt tên ActivityLifecycle
Bước 2: Thêm các hàm tr¿ng thái cāa Activity (onCreate, onRestart, onStop, onPause, onStart, onResume, onDestroy, onSaveInstanceState, onRestoreInstanceState) và đặt log để xem tiến trình ch¿y cāa Activity (tr¿ng thái) á cửa sổ logcat
Bước 3: Ch¿y ăng dÿng và quan sát tr¿ng thái cāa Activity trong logcat
Bước 4: Nhấn nút Home để thoát ăng dÿng và quan sát tr¿ng thái
Bước 5: Má l¿i ăng dÿng và tiếp tÿc quan sát tr¿ng thái lúc này
Trang 38Bước 7: Sử dÿng phím đa nhiệm, quan sát tr¿ng thái
Bước 8: Quay l¿i ăng dÿng, quan sát tr¿ng thái
Bước 9: Thoát khßi ăng dÿng, quan sát tr¿ng thái
3.2.4 Đß °u tiên trong āng dāng
Android quÁn lý các ăng dÿng dựa trên độ ưu tiên
Nếu hai ăng dÿng có cùng tr¿ng thái thì ăng dÿng nào đã ch¿y lâu hơn sẽ có độ
ưu tiên thấp hơn
Nếu ăng dÿng đang ch¿y một Service hay Content Provider do một ăng dÿng khác hỗ trợ thì sẽ có cùng độ ưu tiên với ăng dÿng đó
Các ăng dÿng sẽ bị đóng mà không có sự báo trước
o Foreground process: là process cāa ăng dÿng hiện thßi đang được ngưßi dùng tương tác
o Visible process: là process cāa ăng dÿng mà activity đang hiển thị đái với ngưßi
Trang 39dùng (onPaused() cāa activity được gọi)
o Service process: là Service đang ch¿y
o Background process: là process cāa ăng dÿng mà các activity cāa nó không
hiển thị với ngưßi dùng (onStoped() cāa activity được gọi)
o Empty process: process không có bất că 1 thành phần nào active
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty process
3.2.5 Thành phần savedInstanceState
savedInstanceState cũng là một trong các thành phần cāa tr¿ng thái trong vòng đßi cāa một Activity savedInstanceState là:
o Một lo¿i dữ liệu không bền vững
o Không được lưu trữ cÿ thể trong đâu ngoài bộ nhớ RAM
o Nó được sử dÿng để truyền, phÿc hãi, lưu tr¿ng thái cāa một Activity
o Dữ liệu trong savedInstanceState được lưu dưới d¿ng Bundle
o Được phÿc hãi khi phương thăc onCreate và onRestoreSavedInstanceState được gọi
o Được lưu trước onStop, với phương thăc onSaveInstanceState
Một Activity, khi đổi chiều xoay màn hình và Activity đó có hỗ trợ chế độ ngang (landscape) thì cÁ Activity đó sẽ bị destroy lúc này các dữ liệu trong Activity sẽ biến mất
và savedInstanceState chính là công cÿ để giúp giữ được tr¿ng thái cāa Activity không bị thay đổi khi xoay màn hình
Ví dÿ: Viết một app máy tính bß túi đơn giÁn, chỉ có cộng trừ Sau khi tính xong phép tính 1 + 1=2, xoay màn hình, kết quÁ cāa phép tính biến mất Vấn đề chúng ta cần là làm thế nào để kết quÁ không biến mất
Bước 1: T¿o mới ăng dÿng đặt tên savedInstanceState, thiết kế giao diện như sau:
Trang 40EditText etFirstNumber, etSecondNumber;
Bước 2: Viết lệnh cho sự kiện onClick() cāa nút Tổng
Bước 3: Ch¿y ăng dÿng, nhập sá và nhấn nút tính tổng
Bước 4: Xoay màn hình ngang, quan sát kết ô kết quÁ (kết quÁ biến mất)
Bước 5: Xử lý kết quÁ không biến mất khi xoay màn hình