giáo trình phát triển ứng dụng trên thiết bị di động nghề tin học ứng dụng cao đẳng

170 0 0
Tài liệu đã được kiểm tra trùng lặp
giáo trình phát triển ứng dụng trên thiết bị di động nghề tin học ứng dụng cao đẳng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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

Trang 3

MĀ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

Trang 4

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 5

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

Bài 10: Content Provider 120

10.1 Gißi thiệu Content Provider 120

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 6

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 7

CH¯¡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 8

Bà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 9

là 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 11

hế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 12

Android 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:

 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 13

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 14

o 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 15

o 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 16

L°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 17

Bướ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 18

2 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 19

2.3 Khởi đßng Android Studio:

Bước 1: Khái động ăng dÿng Android Studio

Trang 20

nghiệ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 21

Lự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 24

Bướ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 25

Giao 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 26

o Lựa chọn thiết bị:

Trang 27

o Chọn API cho thiết bị:

Trang 28

Bước 5: Ch¿y chương trình.

Trang 30

Bà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

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:

Khái động Activity Khái động Service

Chuyển phát thông tin cho Broadcast Receiver

Trang 31

View: 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…

 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 32

Lị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 33

3.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

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >

<activity android:name="com.your-company.MyFirstActivity" > <intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>

</activity> </application>

 Đă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{ @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); }

}

Trang 35

chỉ 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

stopped

o Inactive: Khi hệ tháng bị thiếu bộ nhớ, nó sẽ giÁi phóng các tiến trình theo nguyên tắc ưu tiên Các Activity á tr¿ng thái stopped hoặc paused cũng có thể bị giÁi phóng và khi nó được hiển thị l¿i thì các Activity này phÁi khái động l¿i hoàn toàn và phÿc hãi l¿i tr¿ng thái trước đó

Trang 36

3.2.3 Vòng đái cÿa Activity (Activity Lifecycle)

Trang 37

public class MainActivity extends AppCompatActivity { private static final String TAG = "State";

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); Log.d(TAG, "onCreate: ");

//T±¡ng tÿ vßi: onStop(), onPause(), onStart(), onResume(), onDestroy() @Override

protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState);

Log.d(TAG, "onSaveInstanceState: "); }

@Override

protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState); Log.d(TAG, "onRestoreInstanceState: ");

} }

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 38

Bướ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 39

dù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 40

EditText etFirstNumber, etSecondNumber; TextView tvResult;

Button btSum;

int firstNumber; int SecondNumber; int Result;

etFirstNumber = findViewById(R.id.etFirstNumber); etSecondNumber = findViewById(R.id.etSecondNumber); tvResult = findViewById(R.id.tvResult);

btSum = findViewById(R.id.btSum);

firstNumber = Integer.parseInt(etFirstNumber.getText().toString()); SecondNumber = Integer.parseInt(etSecondNumber.getText().toString()); Result = firstNumber + SecondNumber;

tvResult.setText(String.valueOf(Result));

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

Ngày đăng: 02/06/2024, 11:50

Tài liệu cùng người dùng

Tài liệu liên quan