Nền tảng Android tích hợp nhiều tính năng nổi bật: Android là một hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho
Trang 2LỜI CAM ĐOAN
Em xin cam đoan đồ án tự em nghiên cứu và xây dựng dựa trên các kiến thức được học trên trường và kinh nghiệm đi làm thực Cùng sự hướng dẫn của Ths Hoàng Thị Cành Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những kiến thức tài liệu tham khảo được ghi rõ trong mục tài liệu tham khảo Nếu phát hiện
có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm về nội dung luận văn của mình Trường đại học CNTT& TT không liên quan đến những vi phạm tác quyền, bản quyền do em gây ra trong quá trình thực hiện (nếu có)
Thái nguyên, ngày tháng 6 năm 2016
Sinh viên thực hiện
Nguyễn Đức Tiến
Trang 3LỜI CẢM ƠN
Sau một thời gian tìm hiểu đề tài “Xây dựng ứng dụng hỗ trợ học Tiếng anh trên hệ điều hành Android”, em đã hoàn thành tiến độ dự kiến Để đạt được
kết quả này, em đã nỗ lực thực hiện và đồng thời cũng nhận được rất nhiều sự giúp
đỡ, quan tâm, ủng hộ của các thầy cô bạn bè và gia đình
Em xin chân thành cảm ơn giáo viên hướng dẫn: Th.S Hoàng Thị Cành – Bộ
môn Công nghệ phần mềm – Trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên đã tận tình giúp đỡ em hoàn thành đồ án tốt nghiệp này
Em xin chân thành cảm ơn các thầy cô và ban lãnh đạo trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên đã nhiệt tình giảng dạy và truyền đạt kiến thức quý báu và bổ ích trong suốt quá trình em học tập tại trường
Em xin chân thành cảm ơn các thầy, cô giáo viên thuộc bộ môn Công nghệ phần mềm đã trang bị cho em những kiến thức chuyên ngành rất hữu ích để em hoàn thành đề tài và phục vụ cho công việc của em sau này
Vì thời gian có hạn nên không thể tránh khỏi những thiếu sót, em rất mong nhận được sự đóng góp ý kiến từ thầy cô và các bạn Em xin chân thành cảm ơn!
Trang 4MỤC LỤC
LỜI CAM ĐOAN 2
LỜI CẢM ƠN 3
MỤC LỤC 4
DANH MỤC HÌNH 6
LỜI NÓI ĐẦU 7
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 8
1.1 Giới thiệu về hệ điều hành di động Android 8
1.1.1 Android SDK là gì? 8
1.1.2 Lịch sử android 9
1.1.3 Máy ảo Dalvik 10
1.1.4 Các phiên bản hệ điều hành Android 11
1.2 Kiến trúc của android 14
1.2.1 Tầng ứng dụng 15
1.2.2 Application framework 15
1.2.3 Library 16
1.2.4 Android Runtime 17
1.2.5 Linux kernel 17
1.3 Android emulator 17
1.4 Các thành phần trong một android project 17
1.4.1 AndroidManifest.xml 17
1.4.2 File R.java 18
1.5 Chu kỳ ứng dụng android 19
1.5.1 Chu kỳ sống thành phần 19
1.5.2 Activity Stack 20
1.5.3 Các trạng thái của chu kỳ sống 20
1.5.4 Chu kỳ sống của ứng dụng 20
1.5.5 Các sự kiện trong chu kỳ sống của ứng dụng 21
1.5.6 Các phương thức của chu kỳ sống 21
1.6 Các thành phần của Android 23
1.6.1 Thành phần của 1 chương trình Androidd 23
1.6.2 Các thành phần trong giao diện Widget 28
1.6.3 Bắt sự kiện trong Android 29
Trang 51.7 Fragment trong Android 30
1.7.1 Khái niệm 30
1.7.2 Đặc điểm của Fragment 30
1.7.3 Vòng đời của một Fragment 32
1.8 JSON trong lập trình Android 34
1.8.1 Giới thiệu về JSON: 34
1.8.2 Cấu Trúc 34
1.9 Tổng quan ngôn ngữ lập trình Java 35
CHƯƠNG 2: KHẢO SÁT PHÂN TÍCH THIẾT KẾ HỆ THỐNG 37
2.1 Khảo sát hiện trạng 37
2.1.1 Sơ lược về Tiếng Anh 37
2.1.2 Các ứng dụng hỗ trợ học Tiếng Anh hiện có 39
2.1.3 Thực trạng việc học Tiếng Anh của sinh viên Đại Học 42
2.1.4 Đề xuất ứng dụng mới 42
2.2 Xác định yêu cầu đề tài 42
2.2.1 Tóm tắt yêu cầu 42
2.2.2 Nội dung 42
2.2.3 Mục tiêu 43
2.3 Phân tích, thiết kế hệ thống 43
2.3.1 Biểu đồ Use Case 43
2.3.2 Biểu đồ trình tự 47
2.3.3 Biểu đồ cộng tác 48
2.3.4 Biểu đồ lớp 50
2.3.5 Biểu đồ hoạt động 51
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG HỖ TRỢ HỌC TIẾNG ANH TRÊN HỆ ĐIỀU HÀNH ANDROID 52
3.1 Giao diện chương trình 52
3.2 Giao diện các chức năng 53
3.3 Giao diện chức năng Note 54
3.4 Giao diện chức năng Grammar 55
3.5 Giao diện chức năng Exercise 56
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59
TÀI LIỆU THAM KHẢO 60
Trang 6DANH MỤC HÌNH
Hình 1.1: Android timeline 9
Hình 1.2: Logo các phiên bản hệ điều hành Android 11
Hình 1.3: Biểu tượng Robot Android 13
Hình 1.4: Cấu trúc stack hệ thống Android 15
Hình 1.5: Chu kỳ sống thành phần 19
Hình 1.6: Chu kỳ sống của Activity 20
Hình 1.7: Phương thức 21
Hình 1.8: Vòng đời của một Activity 25
Hình 1.9: Qúa trình truyền dữ liệu giữa các Activity 26
Hình 1.10: Chu kỳ sống của một Service 27
Hình 1.11: Quá trình hoạt động của Fragment 31
Hình 1.12: Vòng đời của một Fragment 32
Hình 2.1 : Biểu đồ Use Case tổng quan 43
Hình 2.2: Biểu đồ Use Case mô tả chức năng Xem bài giảng 44
Hình 2.3: Biểu đồ Use Case mô tả chức năng Học lý thuyết 45
Hình 2.4: Biểu đồ Use Case mô tả chức năng Làm bài tập 46
Hình 2.5: Biểu đồ trình tự mô tả chắc năng Xem bài giảng 47
Hình 2.6: Biểu đồ trình tự mô tả chắc năng học lý thuyết 47
Hình 2.7: Biểu đồ trình tự mô tả chắc năng làm bài tập 48
Hình 2.8: Biểu đồ cộng tác mô tả chắc năng xem bài giảng 48
Hình 2.9: Biểu đồ cộng tác mô tả chắc năng học lý thuyết 49
Hình 2.10: Biểu đồ cộng tác mô tả chắc năng làm bài tập 49
Hình 2.11: Biểu đồ lớp của chương trình 50
Hình 3.1: Giao diện chính của chương trình 52
Hình 3.2: Giao diện các chức năng chính 53
Hình 3.3: Giao diện Note 54
Hình 3.4: Giao diện Grammar 55
Hình 3.5: Giao diện Exercise 56
Hình 3.6: Giao diện làm bài 57
Trang 7LỜI NÓI ĐẦU
Đứng trước xu thế toàn cầu hoá, ngành dịch vụ Viễn thông nói chung và dịch vụ điện thoại di động nói riêng ở Việt Nam đã đạt được những thành tựu nhất định Sơ khai là một ngành với nhũng điều kiện cơ sở vật chất nghèo nàn, dịch vụ viễn thông còn rất lạc hậu Cho đến nay, ngành Viễn thông Việt nam đã hoà nhập với mạng thông tin toàn cầu, đóng góp vào GDP 0,2% năm 1991 và đến nay đã lên tới con số 10,5% Đặc biệt số lượng thuê bao dịch vụ điện thoại di động đã thay đổi một cách nhanh chóng, từ 4.060 thuê bao năm 1993 lên tới 1.200.000 thuê bao tính đến hết tháng 3 năm 2005 Trước xu thế hội nhập ngày càng mở rộng, ngành dịch vụ Viễn thông nói chung và dịch vụ điện thoại di động nói chung đang bước vào giai đoạn cạnh tranh rất lớn Nổi lên trong giai đoạn hiện nay là công nghệ hệ điều hành di động và nổi bật như một ngôi sao mới là hệ điều hành Android Hệ điều hành Android ra đời với sự kế thừa những ưu việt của các hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay, được nhà phát triển bởi hãng công nghệ rất nổi tiếng hiện nay là Google hậu thuẫn Android nhanh chóng là đối thủ cạnh tranh mạnh mẽ với các hệ điều hành trước đó và đang là hệ điều hành di động của tương lai, được nhiều người ưa chuộng nhất
Vì vậy em đã quyết định chọn đề tài “Xây dựng ứng dụng hỗ trợ học Tiếng anh trên hệ điều hành Android” cho đợt đồ án tốt nghiệp này Trong quá trình
triển khai đề tài em tập trung tìm hiểu về hệ điều hành Android và nền tảng phát triển phần mềm trên Android từ đó xây chương trình ứng dụng
Em xin chân thành cảm ơn cô giáo Hoàng Thị Cành trong thời gian qua đã hướng dẫn tận tình để em có thể hoàn thành bài báo cáo đồ án tốt nghiệp này
Thái Nguyên, tháng 5 năm 2016
Sinh viên
Nguyễn Đức Tiến
Trang 8CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu về hệ điều hành di động Android
Android được phát triển bởi tập đoàn Google, phiên bản đầu tiên ra đời năm
2008 Được xây dựng trên một nền tảng mở, và một bộ thư viện đa năng, mạnh mẽ với nguyên lý mở, Android đã nhanh chóng được cộng đồng lập trình viên di động hưởng ứng mạnh mẽ Nền tảng Android tích hợp nhiều tính năng nổi bật:
Android là một hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho các thiết bị
Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…
Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa lỗi, tích hợp với Eclipse SDK
Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di động bao gồm: hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản
1.1.1 Android SDK là gì?
Android SDK là một bộ công cụ phát triển bao gồm một trình gỡ lỗi, các thư viện, trình mô phỏng thiết bị (dựa trên QEMU), mã nguồn và hướng dẫn Nền tảng phát triển hiện nay được Android hỗ trợ bao gồm kiến trúc x86 - máy tính chạy Linux (bất kỳ máy tính để bàn được cài Linux), Mac OS X 10.4.8 hoặc cao hơn, Windows XP hoặc Vista, dĩ nhiên cả Windows Seven Các thành phần được yêu cầu còn bao gồm Java Development Kit, Apache Ant, và Python 2.2 trở lên IED được hỗ trợ chính thức là Eclipse (3.2 hoặc mới hơn) sử dụng Android
Trang 9Development Tools (ADT) Plugin, mặc dù các nhà phát triển có thể sử dụng bất kỳ trình soạn thảo văn bản nào để chỉnh sửa file XML Java và sau đó sử dụng công cụ Command Line để tạo, xây dựng và gỡ lỗi của ứng dụng Android
1.1.2 Lịch sử android
Ban đầu Android là hệ điều hành cho các thiết bị cầm tay dựa trên lõi Linux do công ty Android Inc (California, Mỹ) thiết kế Công ty này sau đó được Google mua lại vào năm 2005 và bắt đầu xây dựng Android Platform Các thành viên chủ chốt tại Android Inc gồm có: Andy Rubin, Rich Miner, Nick Sears, and Chris White
lập trình viên thiết bị cầm tay
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng T-Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1, chiếc smartphone đầu tiên dựa trên nền tảng Android Một vài ngày sau đó, Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate 1.0 Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform
Trang 10Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúc của
nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể sử dụng lại các thành phần từ những ứng dụng khác Việc tái sử dụng không chỉ được áp dụng cho cho các dịch vụ mà nó còn được áp dụng cho cả các thành phần dữ liệu và giao diện người dùng
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng buộc vào các nhà cung cấp mạng điện thoại di động Mục tiêu của thiết bị này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết bị thực có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào Vào khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên vản vá lỗi 1.1 của hệ điều hành này
Ở cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý Android cố định vấn đề này bằng cách phát hành SDK 1.5 vào tháng 4 năm 2009, cùng với một số tính năng khác Chẳng hạn như nâng cao khả năng ghi âm truyền thông, vật dụng, và các live folder
1.1.3 Máy ảo Dalvik
Dalvik là máy ảo giúp các ứng dụng java chạy đư ợc trên các thiết bị động Android Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ
xử lý Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvik, nơi mà một số tổ tiên của ông sinh sống
Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác Khi nhà phát triển viết một ứng dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường Java Sau đó,
nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dx Đây
là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex bytecode "Dex" là
Trang 11từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng dụng Android
1.1.4 Các phiên bản hệ điều hành Android
Android đã trải qua một số các cấp nhật kể từ lần đầu phát hành Những cập nhật này nhìn chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới vào
hệ điều hành
Hình 1.2: Logo các phiên bản hệ điều hành Android
Android những thế hệ đầu tiên 1.0 ( 9/2008) và 1.1 ( 2/2009) chưa có tên gọi chính thức Từ thế hệ tiếp theo, mỗi bản nâng cấp đều được đặt với những mã tên riêng dựa theo các món ăn hấp dẫn theo thứ tự bảng chữ cái từ “C-D-E-F-G-H-I” Hiện tại các phiên bản chính của Android bao gồm:
Android 1.5 (Cupcake): Ra mắt tháng 4/2009: Phiên bản này có một số tính
năng đáng chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình, tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím ảo với khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetooth trong một khoảng cách nhất định, các widget và thư mục mới có thể cài đặt linh động trên màn hình chủ
Android 1.6 (Donut): Ra mắt tháng 9/2009: Phiên bản này giúp nâng cao trải
nghiệm trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép
Trang 12người dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả năng tìm kiếm bookmarks, history, contacts và web trên màn hình chủ, bước đầu hỗ trợ màn hình độ phân giải WVGA
Android 2.0/2.1 (Eclair): Ra mắt tháng 10/2009: Phiên bản này có sự cải thiện
rõ rệt trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ
và độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩn HTML5, Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camera zoom kĩ thuật số tích hợp đèn flash, nâng cấp bàn phím ảo và kết nối Bluetooth 2.1
Android 2.2 (Froyo): Ra mắt tháng 5/2010: Phiên bản này chú trọng nâng cấp
tốc độ xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm tính năng tạo điểm truy cập Wi-Fi Một tính năng đáng chú ý khác hỗ trợ chuyển đổi nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phím đồng thời cho phép cài đặt và cập nhật ứng dụng ở các thiết bị mở rộng bộ nhớ Một trong những smartphone đầu tiên chạy phiên bản Android 2.2 Froyo là LG Optimus One
Android 2.3 (Gingerbread): Ra mắt tháng 12/2010: Phiên bản này đ nâng
cấp đáng kể giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ trợ công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nâng cao tính năng copy–paste Cùng với phiên bản Gingerbread, Google cũng ra mắt điện thoại đầu tiên của hãng sử dụng nền tảng này là Google Nexus S
Android 3.2 (Honeycomb): Ra mắt tháng 2/2011: Đây là phiên bản hệ điều
hành dành riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet,
từ các thao tác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail ) Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiều màn hình home khác nhau, cho phép người dàng dễ dàng tùy biến giao diện nếu muốn
Android 4.0 (Ice-cream sandwich): Ra mắt tháng 10/2011, là sự kết hợp giữa
Gingerbread và Honeycomb và sẽ chạy trên tất cả các thiết bị như điện thoại, máy tính bảng, máy tính xách tay…
Android 4.1 (Jelly Bean): Ra mắt 9-7-2012: Máy tính bảng Nexus 7, sản
phẩm hợp tác giữa Google và Asus, là thiết bị dùng Jelly Bean đầu tiên ra mắt
Trang 13Android 4.1 nâng tầm hoạt động cho hệ điều hành của Google, trở thành hệ điều hành cho thiết bị di động hàng đầu hiện nay, đe dọa cả "ông lớn" Windows
Khả năng sắp xếp giao diện chủ và widget trong Jelly Bean rất tùy biến và linh hoạt Hệ thống hỗ trợ dịch vụ ví điện tử Google Wallet, đặc biệt trình duyệt web mặc định trong Android được thay thế bởi đại diện tên tuổi: Chrome, với khả năng đồng bộ dữ liệu theo tài khoản với bản Chrome trên máy tính
Hình 1.3: Biểu tượng Robot Android
Jelly Bean giới thiệu Google Now, dịch vụ trực tuyến mới hiện chỉ dành cho Android, một phụ tá ảo đắc lực cho công việc sắp xếp lịch trình, tìm kiếm thông tin, xác định vị trí Rất đa năng và được xem như lời đáp trả của Google với "phụ tá ảo" Apple Siri trong iOS
Android 4.2 (vẫn là Jelly Bean): Ra mắt tháng 11-2012: Chỉ sau gần năm
tháng ra mắt Android 4.1, Google tiếp tục bồi thêm sức nặng cho Android với phiên bản 4.2 và vẫn mang tên mã Jelly Bean
Android 4.2 tiếp tục mang đến những cải tiến hấp dẫn cho ứng dụng chụp ảnh (Camera) như HDR, Photo Sphere, hiệu ứng ảnh, Google Now, đưa tính năng lướt chọn từ rất hay trong bàn phím ảo Chức năng "bom tấn" hỗ trợ nhiều tài khoản người dùng (multi-user profile) lần đầu tiên được áp dụng trong Android 4.2 nhưng chỉ có người dùng máy tính bảng thừa hưởng chức năng này
Android 4.3 (vẫn là Jelly Bean): Lại thêm một thế hệ Jelly Bean nữa và lần
này là Android 4.3 Ngày 24/7/2013, Google đã chính thức ra mắt hệ điều hành này
Trang 14mặt trên thị trường và đi kèm những tính năng mới như hỗ trợ kết nối Bluetooth Smart, bộ API OpenGL ES 3.0, bổ sung tính năng sử dụng Wi-Fi để định vị ngay cả khi người dùng tắt kết nối này đi cùng nhiều thay đổi lớn nhỏ khác
Bên cạnh tính năng Multi User của Android 4.2 như đã nói ở trên, Google bổ sung thêm một tính năng mới cho Android 4.3 đó là Restricted Profile Mỗi thành viên sẽ có một "hồ sơ" riêng của mình và chỉ có thể làm được những gì được chỉ định trong "hồ sơ" Google còn làm mới trình gọi điện thoại mặc định để hỗ trợ việc tìm kiếm trong danh bạ khi người dùng bấm số, giống như kiểu bàn phím T9 trước đây Google cũng có thêm vào Notification Access để cho phép các ứng dụng bên thứ ba truy cập và tương tác với những thông báo nằm trong notification hệ thống ngay khi chúng vừa xuất hiện
Android 4.4 KitKat: Thế hệ kế tiếp của Android là Android 4.4 và không còn
mang tên Jelly Bean nữa mà gọi là KitKat Nếu như bạn chưa biết thì KitKat là một loại bánh xốp bọc chocolate của hãng Nestle Cách đặt tên này cũng hoàn toàn khớp với trình tự chữ cái mà các phiên bản Android sử dụng làm tên mã* Google tiết lộ thêm rằng "mục tiêu của chúng tôi với Android KitKat đó là mang trải nghiệm
Android đáng kinh ngạc đến cho mọi người"
Tương lai Android X:
Nhiều dự đoán cho rằng thế hệ Android 5.0 kế tiếp sẽ có tên mã "Key Lime Pie" và thế hệ thiết bị Nexus mới của Google sẽ một lần nữa trở thành "đại diện đầu tiên" sở hữu nền tảng mới này Android sẽ dần xóa nhòa lằn ranh giữa hệ điều hành cho thiết bị di động và hệ điều hành cho máy tính cá nhân, giảm khác biệt phân mảnh, đem đến những chức năng thú vị hơn nữa
1.2 Kiến trúc của android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây:
Trang 15Hình 1.4: Cấu trúc stack hệ thống Android
1.2.1 Tầng ứng dụng
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser, camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều được viết bằng Java
1.2.2 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch
vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái,
và nhiều, nhiều hơn nữa
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi các ứng dụng lõi Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có th ể sử dụng những khả năng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ) Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bởi người sử dụng
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
Trang 16 Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,…
Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu từ các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó
Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: localized strings, graphics, and layout files
Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các custom alerts trong status bar
Activity Maanager được dùng để quản lý chu trình sống của ứng dụng và điều hướng các activity
1.2.3 Library
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android Điều này đư ợc thể hiện thông qua nền tảng ứng dụng Android Một số các thư viện cơ bản được liệt kê dưới đây:
Media Libraries - dựa trên OpenCORE của PacketVideo; hỗ trợ thu và phát
nhiều định dạng audio, video và hình ảnh tĩnh phổ biến bao gồm: MPEG4, H.264, MP3, AAC, AMR, JPG, và PNG
Surface Manager - quản lý quyền truy cập vào phần hiển thị giao diện cả
2D và 3D Hỗ trợ đa ứng dụng
LibWebCore - trình duyệt web trên một engine hiện đại, có hỗ trợ cho cả
trình duyệt web của Android lẫn các View nhúng
SGL - các engine đồ họa 2D nền bên dưới
Thư viện 3D - một kế thừa dựa trên OpenGL ES 1.0 API; các thư viện, hoặc
sử dụng phần cứng tăng tốc 3D (nếu có) hoặc bao gồm, tối ưu hóa 3D trên phần mềm
Freetype - bitmap và vector font
SQLite - một engine cơ sở dữ liệu quan hệ mạnh mẽ và nhẹ phục vụ cho tất
cả các ứng dụng
Trang 171.2.4 Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hết các chứcnăng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Tất cả các ứng dụng Android đều chạy trong tiến trình riêng Máy ảo Dalvik đã được viết để cho một thiết bị có thể chạy nhiều máy ảo hiệu quả Các VM Dalvik thực thi các tập tin thực thi Dalvik (dex) Định dạng được tối ưu hóa cho bộ nhớ tối thiểu VM là dựa trên register-based, và chạy các lớp đã được biên dịch bởi một trình biên dịch Java
để chuyển đổi thành các định dạng dex Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản như luồng và quản lý bộ nhớ thấp
1.2.5 Linux kernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như security, memory management, process management, network stack, and driver model Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần mềm stack
1.3 Android emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool Các Android coder sẽ cần phải sử dụng công cụ IDE (Integrated Development Enveronment) này để phát triển, debugging và testing cho ứng dụng Tuy nhiên, các coder cũng có thể không cần phải sử dụng IDE mà thay vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator như thường
Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết bị thật Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video, nghe phone, nguồn điện giả lập và bluetooth
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn
mở, công nghệ này được gọi là QEMU (http://bellard.org/qemu/) được phát triển bởi Fabrice Bellard
1.4 Các thành phần trong một android project
1.4.1 AndroidManifest.xml
Trong bất kì một project Android nào khi tạo ra đều có một file AndroidManifest.xml, file này đ ược dùng để định nghĩa các screen sử dụng, các
Trang 18permission cũng như các theme cho ứng dụng Đồng thời nó cũng chứa thông tin về phiên bản SDK cũng như main activity sẽ chạy đầu tiên
File này được tự động sinh ra khi tạo một Android project Trong file manifest bao giờ cũng có 3 thành phần chính đó là: application, permission và version
Application
Thẻ <application>, bên trong thẻ này chứa các thuộc tính được định nghĩa cho ứng dụng Android như:
android:icon = “drawable resource”: Ở đây đặt đường dẫn đến file icon của
ứng dụng khi cài đặt VD: android:icon = “@drawable/icon ”
android:name = “string”: Thuộc tính này để đặt tên cho ứng dụng Android
Tên này sẽ được hiển thị lên màn hình sau khi cài đặt ứng dụng
android:theme = “drawable theme”: Thuộc tính này để đặt theme cho ứng
dụng Các theme là các cách để hiển thị giao diện ứng dụng
Permission
Bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên của ứng dụng Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest của ứng dụng cần phải khai báo các quyền truy xuất như sau:
Trang 19Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy xa làm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quá trình xây dựng ứng dụng
1.5 Chu kỳ ứng dụng android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng dụng khi codes cần được run và sẽ còn chạy cho đến khi:
Nó không phụ thuộc
Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến trình ứng dụng không được điều khiển trực tiếp bới chính nó Thay vào đó, nó được xác định bởi hệ thống qua một kết hợp của:
Những phần của ứng dụng mà hệ thống biết đang chạy
Những phần quan trọng như thế nào đối với người dùng
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống
1.5.1 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu khởi tạo và đến thời điểm kết thúc Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible
Hình 1.5: Chu kỳ sống thành phần
Trang 201.5.2 Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack Khi một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đang chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trình activity mới tồn tại
Nếu người dùng nhấn nút Back thì activity kế tiếp của stack sẽ di duyển lên và trở thành active
Hình 1.6: Chu kỳ sống của Activity
1.5.3 Các trạng thái của chu kỳ sống
Một Activity chủ yếu có 3 chu kỳ chính sau:
Active hoặc running: Khi Activity là được chạy trên màn hình Activity này tập trung vào những thao tác của người dùng trên ứng dụng
Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người dùng vẫn trông thấy Có nghĩa là một Activity mới ở trên nó nhưng không bao phủ đầy màn hình Một Activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ
Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác Nó vẫn còn trạng thái
và thông tin thành viên trong nó Người dùng không thấy nó và thường bị loại bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác
1.5.4 Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phần đều
có một chu trình sống riêng Và ứng dụng chỉ được gọi là kết thúc khi tất cả các thành phần trong ứng dụng kết thúc Activity là một thành phần cho phép người
Trang 21dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứng dụng đã kết thúc Bởi vì ngoài Activity là thành phần có khả năng tương tác người dùng thì còn có các thành phần không có khả năng tương tác với người dùng như là Service, Broadcast receiver Có nghĩa là những thành phần không tương tác người dùng có thể chạy background dưới sự giám sát của hệ điều hành cho đến khi người dùng tự tắt chúng
1.5.5 Các sự kiện trong chu kỳ sống của ứng dụng
Nếu một Activity được tạm dừng hoặc dừng hẳn, hệ thống có thể bỏ thông tin khác của nó từ vùng nhớ bởi việc finish() (gọi hàm finish() của nó), hoặc đơn giản giết tiến trình của nó Khi nó được hiển thị lần nữa với người dùng, nó phải được hoàn toàn restart và phục hồi lại trạng thái trước Khi một Activity chuyển qua chuyển lại giữa các trạng thái, nó phải báo việc chuyển của nó bằng việc gọi hàm transition
Hình 1.7: Phương thức
Tất cả các phương thức là những móc nối mà bạn có thể ghi đè để làm tương thich công việc trong ứng dụng khi thay đổi trạng thái Tất cả các Activity bắt buộc phải có onCreate() để khởi tạo ứng dụng Nhiều Activity sẽ cũng hiện thực onPause() để xác nhận việc thay đổi dữ liệu và mặt khác chuẩn bị dừng hoạt động với người dùng
1.5.6 Các phương thức của chu kỳ sống
Phương thức: onCreate()
Được gọi khi activity lần đầu tiên được tạo
Ở đây bạn làm tất cả các cài đặt tĩnh tạo các view, kết nối dữ liệu đến list
Phương thức này gửi qua một đối tượng Bundle chứa đựng từ trạng thái
trước của Activity
Trang 22 Được gọi trước khi một activity visible với người dùng
Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop() nế nó trở nên ẩn
Phương thức: onResume()
Được gọi trước khi activity bắt đầu tương tác với người dùng
Tại thời điểm này activity ở trên dỉnh của stack activity
Luôn theo sau bởi onPause()
Phương thức: onPause()
Được gọi khi hệ thống đang resuming activity khác
Phương thức này là điển hình việc giữ lại không đổi dữ liệu
Nó nên được diễn ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không được resumed ngay cho đến khi nó trở lại
Trạng thái của activity có thể bị giết bởi hệ thống
Phương thức: onStop()
Được gọi khi activity không thuộc tầm nhìn của người dùng
Nó có thể diễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được resumed và bao phủ nó
Được theo sau bởi onRestart() nếu activity đang đở lại để tương tác với người dùng, hoặc onDestroy() nếu activity đang bỏ
Trạng thái của activity có thể bị giết bởi hệ thống
Phương thức: onDestroy()
Được gọi trước khi activity bị hủy
Đó là lần gọi cuối cùng mà activity này được nhận
Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm
Trang 23 Bạn có thể phân biệt giữa 2 kịch bản với phương isFinshing()
Trạng thái của activity có thể được giết bởi hệ thống
Một ứng dụng có thể gồm chỉ một activity hay nhiều activity Thông thường, một trong số các activity được đánh dấu như là activity đầu tiên phải được trình diễn tới người dùng khi ứng dụng được khởi động Chuyển từ một activity sang activity khác được hoàn thành bằng cách cho activity hiện thời khởi động activity
kế tiếp
Mỗi activity được đưa ra một cửa sổ mặc định để vẽ vào Thông thường, cửa sổ
sẽ lấp đầy màn hình, nhưng nó có thể nhỏ hơn màn hình và nằm trên các cửa sổ khác Một activity có thể sử dụng cửa sổ bổ sung - ví dụ như một pop-up dialog gọi cho một đáp ứng người dùng ở giữa của activity, hay một cửa sổ biểu diễn những cho người dùng với thông tin quan trọng khi họ chọn một item cụ thể trên màn hình Nội dung trực quan của cửa sổ được cung cấp bởi một cây phân cấp các đối tượng view dẫn xuất từ lớp View Mỗi view điều khiển một khoảng hình chữ nhật
cụ thể bên trong cửa sổ View cha chứa và tổ chức bố cục các view con Các view lá
vẽ trong hình chữ nhật mà chúng điều khiển và đáp ứng lại các hành động người dùng trực tiếp ở khoảng trống này Do đó, các view là nơi mà các tương tác của activity với người dùng diễn ra Ví dụ một view có thể hiển thị một hình ảnh nhỏ và
Trang 24khởi tạo một hoạt động khi người dùng nhấn vào hình ảnh đó Android có một số view đã xây dựng sẵn mà bạn có thể sử dụng - gồm có các buttons, text fields, scroll bars, menu items, check boxes…
Một cây phân cấp view được đặt trong một cửa sổ của activity bằng phương
thức Activity.setContentView() Content view là đối tượng View ở gốc của cây phân
cấp
Class cơ sở Activity định nghĩa một loạt các sự kiện mà điều chỉnh vòng đời của một hoạt động Class Activity định nghĩa các sự kiện sau đây:
- onCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên
- onStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng
- onResume():Được gọi khi hoạt động bắt đầu tương tác với người sử dụng
- onPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt động
trước đó
- onStop():Được gọi khi hoạt động không còn hiển thị với người dùng
- onDestroy():Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng tay
hoặc bằng hệ thống để bảo tồn bộ nhớ)
- onRestart(): Được gọi khi hệ thống đã được dừng lại và khởi động lại một
lần nữa
Trang 25Hình 1.8: Vòng đời của một Activity
Intent:
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity
Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp các Activity có thể triệu gọi cũng như truyền các
dữ liệu cần thiết tới một Activity khác Điều này cũng giống như việc di chuyển qua lại giữa các Forms trong lập trình Windows Form
Trang 26Hình 1.9: Qúa trình truyền dữ liệu giữa các Activity
Một service không có giao diện trực quan, nó chạy trên nền trong một khoảng thời gian không xác định Ví dụ một service có thể chơi nhạc nền, hay nó nạp dữ liệu trên mạng hay tính toán cái gì đó và cung cấp kết quả cho activity cần đến nó
Mỗi service mở rộng từ lớp cơ sở Service
Một ví dụ cổ điển là media player chơi các bài hát từ một danh sách Ứng dụng player có thể có một hay hai activity cho phép người dùng chọn bài hát và bắt đầu chơi Tuy nhiên, music playback không tự nó được xử lý bởi một activity bởi vì người dùng sẽ mong muốn chơi tiếp nhạc khi họ rời khỏi player và làm cái gì đó khác Để tiếp tục chơi nhạc, media player activity có thể khởi động một service chạy trên nền Hệ thống sẽ giữ cho music playback service chạy thậm chí khi activity khởi động nó rời khỏi màn hình
Trong khi kết nối, bạn có thể giao tiếp với dịch vụ thông qua giao diện mà service đó trưng ra Ví dụ như trong music service, giao diện này có thể cho phép người dùng pause, rewind, stop và restart lại playback
Giống như các activity và các thành phần khác khác, service chạy trong thread chính của tiến trình ứng dụng Vì thế chúng không thể chặn những thành phần khác hay giao diện người dùng, chúng thường tạo ra các thead khác cho các nhiệm vụ hao tốn thời gian
Trang 27Hình 1.10: Chu kỳ sống của một Service
Một Broadcast Rreceiver là một thành phần không làm gì ngoài việc nhận và đáp lại các thông báo broadcast Nhiều broadcast khởi đầu trong mã hệ thống - ví dụ như thông báo múi giờ thay đổi, pin yếu, ảnh đã được chụp, hay người dùng đã thay đổi ngôn ngữ … Các ứng dụng có thể tạo ra các broadcast, chẳng hạn để ứng dụng khác biết được một số dữ liệu đã được tải về thiết bị và sẵn sàng cho việc sử dụng chúng
Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thông báo nào mà nó cho là quan trọng Tất cả các receiver mở rộng từ lớp cơ sở BroadcastReceiver
Broadcast Receiver không hiển thị một giao diện người dùng Tuy nhiên chúng
có thể bắt đầu một activity để đáp lại thông tin mà chúng nhận, hay chúng có thể sử dụng NotificationManager để cảnh báo người dùng Notifications có thể lấy sự chú
ý của người dùng bằng nhiều cách, lóe sáng đèn sau, rung, tạo ra âm thanh,… Chúng thường lấy một biểu tượng bền vững trong thanh trạng thái, cái mà người dùng có thể mở để lấy thông điệp
Trang 28nhiên, các ứng dụng không gọi trực tiếp các phương thức này, chúng sử dụng một đối tượng ContentResolver và gọi các phương thức của nó Một ContentResolver có thể nói chuyện với bất cứ content provider nào, chúng cộng tác với provider để quản lý giao tiếp liên tiến trình
Trước khi Android có thể khởi động một thành phần ứng dụng, nó phải biết rằng thành phần đó tồn tại Vì vậy, ứng dụng khai báo những thành phần của mình trong một manifest file được gắn vào Android package, file apk này cũng giữ chứa mã của ứng dụng và các tài nguyên
Manifest file là một file XML có cấu trúc và thường được đặt tên là AndroidManifest.xml cho mọi ứng dụng Nó thực hiện một số bổ sung để khai báo các thành phần của ứng dụng, như là nêu tên các thư viện ứng dụng cần đến, và xác định các quyền hạn của ứng dụng muốn được cấp
Ví dụ như nó khai báo các Activity trong chương trình của chúng ta, khi khởi động chương trình thì Activity nào sẽ được thực hiện đầu tiên, các quyền truy cập Internet, SDCard, hay các vấn đề về gửi nhận tin nhắn, cuộc gọi
Trong một ứng dụng Android, giao diện người dùng được xây dựng bằng cách
sử dụng View và ViewGroup đối tượng Có nhiều loại quan điểm và các nhóm view, mỗi một trong số đó là hậu duệ của lớp View View objects là các đơn vị cơ bản của biểu hiện giao diện người dùng trên nền tảng Android Các class xem như
là cơ sở phục vụ cho class con được gọi là "widget", trong đó cung cấp đầy đủ các đối tượng thực hiện giao diện, giống như các lĩnh vực văn bản và nút Class ViewGroup phục vụ như là cơ sở cho lớp con được gọi là " layouts", cung cấp các loại khác nhau của kiến trúc bố trí, như linear, tabular và relative
1.6.2 Các thành phần trong giao diện Widget
Có rất nhiều cách bố trí giao diện Sử dụng nhiều hơn và các loại khác nhau của các view group, bạn có thể cấu trúc views con và view groups trong vô số cách Xác định các nhóm xem được cung cấp bởi Android (gọi là layouts) bao gồm LinearLayout, RelativeLayout, TableLayout, GridLayout và khác Mỗi cung cấp
Trang 29một bộ duy nhất của các thông số bố trí được sử dụng để xác định vị trí của views con và cơ cấu layout Để tìm hiểu về một số các loại khác nhau của các view group
được sử dụng cho một layout, đọc Giao diện đối tượng thường gặp
Widget là một object View phục vụ như một giao diện để tương tác với người dùng Android cung cấp một tập các widgets thực hiện đầy đủ, giống như các button, Checkbox, và text-entry , do đó bạn có thể nhanh chóng xây dựng giao diện người dùng của bạn Một số widgets được cung cấp bởi Android phức tạp hơn, giống như một date picker, clock, và zoom controls Nhưng nó không giới hạn trong các loại widgets được cung cấp bởi các nền tảng Android
1.6.3 Bắt sự kiện trong Android
Khi đã thêm một số Views/widgets đến giao diện Để được thông báo về UI
events người dùng, cần phải làm một trong hai điều: Xác định một sự kiện nghe và đăng ký nó với các View Đây là cách lắng nghe sự kiện Các class View có một
phương pháp gọi là On<something>()
Ví dụ: View.OnClickListener (để xử lý "nhấp chuột" trên một View),
View.OnTouchListener ( để xử lý các sự kiện màn hình cảm ứng trong một View),
và View.OnKeyListener (để xử lý thiết bị ép quan trọng trong một View) Vì vậy
nếu muốn View được thông báo khi nó là " clicked" (chẳng hạn như khi một nút
được chọn), thực hiện và xác định OnClickListener của nó gọi method onClick() (nơi thực hiện các hành động sau khi nhấp chuột), và đăng ký nó vào Xem với setOnClickListener()
Ghi đè một callback method hiện cho View Đây là những gì nên làm gì khi đã thực hiện lớp View của riêng bạn và muốn lắng nghe cho các sự kiện cụ thể xảy ra trong nó Ví dụ về các sự kiện có thể xử lý bao gồm màn hình là
touchedonTouchEvent() khi trackball là di chuyển onTrackballEvent() hoặc khi một phím trên thiết bị được nhấn onKeyDown() Điều này cho phép xác định các
hành vi mặc định cho từng sự kiện bên trong tuỳ chỉnh View và xác định xem sự kiện này cần được thông qua ngày để View con khác Một lần nữa, đây là những callbacks View class, do đó, cơ hội duy nhất của bạn để xác định đó là khi bạn xây dựng một phần tùy chỉnh
Trang 301.6.4 Menu
Menu đơn có một phần quan trọng của giao diện người dùng trong một ứng dụng Menus cung cấp một giao diện đáng tin cậy cho thấy rằng các chức năng ứng dụng và cài đặt Trong trình đơn ứng dụng phổ biến nhất là tiết lộ bằng cách bấm phím MENU trên thiết bị Tuy nhiên, cũng có thể thêm Context Menus, có thể hiển thị khi người sử dụng máy nhấn và nắm giữ phím trên một mục Thực đơn cũng được hệ thống phân cấp cấu trúc bằng cách sử dụng một xem, nhưng bạn không xác định cấu trúc này cho mình
Thay vào đó, xác định onCreateOptionsMenu() or onCreateContext Menu() gọi
method cho hoạt động của mình và tuyên bố các mục mà mình muốn bao gồm trong menu của mình Trong một thời gian thích hợp, Android sẽ tự động tạo ra hệ thống View phân cấp cần thiết cho menu, và rút ra mỗi trong mỗi menu items đó
1.7 Fragment trong Android
1.7.1 Khái niệm
Fragment là một phần giao diện người dùng hoặc hành vi của một ứng
dụng Fragment có thể được đặt trong Activity, nó có thể cho phép thiết
kế activity với nhiều mô-đun Có thể nóiFragment là một loại sub-Activity
1.7.2 Đặc điểm của Fragment
Fragment cũng có layout của riêng của nó, cũng có các hành vi và vòng đời riêng
Chúng ta có thể thêm hoặc xóa Fragment trong một Activity trong khi Activity này đang chạy
Có thể kết hợp nhiều Fragment trong một Activity để xây dựng giao diện người dùng đa khung
Một Fragment có thể được sử dụng trong nhiều Activities
Vòng đời của Fragment có quan hệ chặt chẽ với vòng đời của Activity đang dùng nó điều này có nghĩa là khi Activity bị tạm dừng thì các Fragment sẽ dừng lại
Fragment có thể thực hiện một hành vi mà không có trong thành phần