TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
PHẦN MỀM
HỖ TRỢ THÔNG BÁO THÔNG TIN
GIAO THÔNG TRÊN NỀN TẢNG
ANDROID
Sinh viên thực hiện
Lê Văn Tuấn
MSSV: 1081533
Cán bộ hƣớng dẫn
Ths. Lâm Hoài Bảo
Cần Thơ, 2012
TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
PHẦN MỀM
HỖ TRỢ THÔNG BÁO THÔNG TIN
GIAO THÔNG TRÊN NỀN TẢNG
ANDROID
Sinh viên thực hiện
Lê Văn Tuấn
MSSV: 1081533
Cán bộ hƣớng dẫn
Ths. Lâm Hoài Bảo
Cán bộ phản biện
Ths. GVC Nguyễn Văn Linh
Ths. Trƣơng Thị Thanh Tuyền
Ths. Lâm Hoài Bảo
Luận văn đƣợc bảo vệ tại: Hội đồng chấm luận văn tốt nghiệp Bộ môn
Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trƣờng Đại học Cần Thơ
vào ngày 11 tháng 05 năm 2012.
Mã số đề tài:
Có thể tìm hiểu luận văn tại:
Thƣ viện Khoa Công nghệ Thông tin, Trƣờng Đại học Cần Thơ
Website: http://www.cit.ctu.edu.vn/
MỤC LỤC
CHƢƠNG 1: TỔNG QUAN ....................................................................................1
1.1
ĐẶT VẤN ĐỀ ............................................................................................1
1.2
LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ .............................................................2
1.3
PHẠM VI ĐỀ TÀI .....................................................................................2
1.4
PHƢƠNG PHÁP NGHIÊN CỨU ...............................................................3
1.5
BỐ CỤC LUẬN VĂN ................................................................................4
CHƢƠNG 2: CƠ SỞ LÝ THUYẾT .........................................................................5
2.1
TỔNG QUAN VỀ ANDROID ...................................................................5
2.1.1 Giới thiệu về android ............................................................................5
2.1.2 Nền tảng android ..................................................................................5
2.2
GIỚI THIỆU GOOGLE MAPS ................................................................ 15
2.3
HỆ THỐNG ĐỊNH VỊ TOÀN CẦU (GPS) .............................................. 15
2.3.1 Giới thiệu hệ thống GPS ..................................................................... 15
2.3.2 Hoạt động của GPS............................................................................. 16
2.3.3 Độ chính xác của GPS ........................................................................ 16
2.3.4 Hệ thống vệ tinh GPS ......................................................................... 17
CHƢƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU .................................... 18
3.1
ĐẶC TẢ HỆ THỐNG .............................................................................. 18
3.1.1 Giới thiệu............................................................................................ 18
3.1.2 Mô tả tổng thể..................................................................................... 18
3.2
PHÂN TÍCH HỆ THỐNG ........................................................................ 19
3.2.1 Sơ đồ Use case.................................................................................... 20
3.2.2 Đặc tả các trƣờng hợp sử dụng ............................................................ 20
3.2.3 Mô hình MCD .................................................................................... 28
3.3
THIẾT KẾ HỆ THỐNG ........................................................................... 29
3.3.1 Mô hình quan hệ dữ liệu ..................................................................... 29
3.3.2 Sơ đồ chức năng ................................................................................. 30
3.3.3 Sơ đồ hoạt động .................................................................................. 30
3.3.4 Mô hình triển khai hệ thống ................................................................ 35
3.4
THIẾT KẾ GIAO DIỆN ........................................................................... 36
3.4.1 Giao diện Webserver .......................................................................... 36
3.4.2 Giao diện thêm điểm giao thông trên server ........................................ 37
3.4.3 Giao diện chính của ứng dụng trên Android ........................................ 38
3.4.4 Menu của chƣơng trình ....................................................................... 38
3.4.5 Giao diện thiết đặt các thông số cho phần mềm................................... 39
3.4.6 Giao diện xem điểm giao thông theo danh sách .................................. 39
3.4.7 Giao diện xem điểm giao thông theo bản đồ ....................................... 40
3.4.8 Giao diện gửi thông tin điểm giao thông ............................................. 40
3.4.9 Giao diện hiển thị chi tiết điểm giao thông .......................................... 41
3.4.10 Giao diện thể hiện đƣờng đi đến điểm giao thông cần tìm ................... 41
3.4.11 Giao diện thông báo điểm giao thông tìm đƣợc ................................... 42
3.5
CÁC GIẢI THUẬT .................................................................................. 42
3.5.1 Giải thuật tìm đƣờng đi ngắn nhất trên đồ thị có hƣớng ...................... 42
3.5.2 Giải thuật nối cạnh của đồ thị từ 2 đỉnh là 2 điểm giao thông .............. 45
3.5.3 Tính khoảng cách giữa 2 điểm giao thông ........................................... 47
3.6
SỬ DỤNG GOOGLE MAPS API ĐỂ XÂY DỰNG WEBSERVER ........ 47
3.6.1 Khởi tạo bản đồ .................................................................................. 48
3.6.2 Hiển thị bản đồ ................................................................................... 48
KẾT LUẬN VÀ ĐỀ NGHỊ .................................................................................... 50
LỜI CẢM ƠN
Trƣớc hết em xin gửi lòng biết ơn sâu sắc đến ba mẹ, gia đình đã hết lòng tạo
điều kiện cho em đƣợc tiếp tục theo đuỗi con đƣờng học vấn, những ngƣời đã luôn
bên cạnh em, độnh viên, chăm sóc, ủng hộ em trong suốt thời gian học tập và
nghiên cứu.
Em xin chân thành cảm ơn quý Thầy Cô khoa Công Nghệ Thông Tin và
Truyền Thông, Bộ môn Công nghệ phần mềm trƣờng Đại Học Cần Thơ đã tận tình
giảng dạy, truyền đạt kiến thức, những ngƣời đã tạo điều kiện thuận lợi cho em thực
hiện đề tài này.
Em xin gởi lời cảm ơn chân thành đến Ths. Lâm Hoài Bảo, ngƣời đã nhiệt
tình hƣớng dẫn em thực hiện đề tài.
Cuối cùng em xin cảm ơn các Anh Chị, bạn bè đã chia sẽ kinh nghiệm quí
báu để em thực hiện đề tài.
Em đã cố gắng hết sức để hoàn thành một cách tốt nhất đề tài luận văn tốt
nghiệp này, nhƣng chắc chắn sẽ không tránh khỏi những thiếu sót. Em mong nhận
đƣợc sự đóng góp chân tình từ quý Thầy Cô và bạn bè.
Cần Thơ, tháng 4 năm 2012
Sinh viên
Lê Văn Tuấn
KÍ HIỆU VÀ VIẾT TẮT
TTGT: Thông tin giao thông.
UTGT: Ùn tắt giao thông.
CSDL: Cơ sở dữ liệu.
ABSTRACT
In modern life, we have to face with many problems one of which is traffic
congestion becoming more serious day after day. It is said that the high volume of
vehicles, the inadequate infrastructure, and the irrational distribution of the
development are main reasons for increasing traffic jam. To solve this problem, the
government was encouraging people to use public transport or vehicles smaller in
size. In addition, VOV radio channel of traffic is also built to aid in traffic, but it
only work with vehicles with radio receiving equipment, and motorcycles are not
used that measures. To overcome this situation, I propose another measure, which is
using the mobile internet to inform the traffic congestion point for people in traffic.
The software developed on mobile phones using the Android platform, it will let
users know that where there is traffic congestion, and distance from the nearest
congestion point to them. I use the Google Maps service and Google Maps API v2
library combined with GPS (Global Positioning System) technology to determine
the user’s location on the map to measure distances from them to the point of traffic
congestion.
TỪ KHÓA
Web Server
PHP & MySQL
GoogleMaps API
Thông tin giao thông
Địa điểm giao thông
CHƢƠNG 1: TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Hiện nay trên địa bàn TP Cần Thơ cũng nhƣ ở các thành phố lớn trong cả
nƣớc đều có tình trạng ùn tắc giao thông gây thiệt hại lớn không những về kinh tế
mà còn kéo theo nhiều hậu quả nghiêm trọng trong xã hội, chƣa kể đến việc ô
nhiễm môi trƣờng do khói xe thải ra khi bị ùn tắc giao thông. Cũng đã có nhiều biện
pháp nhằm hạn chế tình trạng này của các cơ quan có thẩm quyền nhƣ: phân làn
đƣờng, bố trí các trục đèn giao thông, phân công cán bộ chỉ huy trực tiếp điều tiết
luồng giao thông,…đặc biệt là có sự tiếp sức của các phƣơng tiện thông tin đại
chúng nhƣ kênh truyền thanh VOV giao thông của đài tiếng nói Việt Nam nhằm hỗ
trợ và kêu gọi ý thức của ngƣời tham gia giao thông. Mặc dù các biện pháp trên đã
mang lại hiệu quả phần nào trong việc cải thiện tình hình ùn tắc giao thông trên các
trục đƣờng chính vào các giờ cao điểm, nhƣng do mật độ ngƣời và phƣơng tiện
tham gia giao thông hiện nay ở mức cao, cơ sở hạ tầng chƣa đáp ứng đƣợc nhu cầu
đi lại của ngƣời dân, cộng với ý thức của ngƣời tham gia giao thông chƣa cao, nên
các biện pháp trên vẫn chƣa mang lại hiệu quả nhƣ mong muốn.
Nguyên nhân gây ra tình trạng ùn tắc giao thông là do ngƣời tham gia giao
thông không biết đƣợc đoạn đƣờng nào đang có lƣu lƣợng ngƣời tham gia giao
thông cao và có nguy cơ ùn tắc, họ cũng không biết đoạn đƣờng nào đang ùn tắc, vì
vậy số điểm ùn tắc cũng tăng lên. Nếu ngƣời tham gia giao thông biết đƣợc đoạn
đƣờng nào đang ùn tắc thì có thể giảm thiểu đƣợc các điểm ùn tắc giao thông.
Cùng mục đích với chƣơng trình VOV giao thông của đài tiếng nói Việt
Nam là nhanh chóng đƣa thông tin về ùn tắc giao thông đến với ngƣời tham gia giao
thông thông qua sóng phát thanh, mà nguồn cung cấp thông tin là các cộng tác viên
hoặc chính là những ngƣời tham gia giao thông đang có mặt tại các điểm ùn tắc giao
thông, hệ thống thông báo và tìm các địa điểm ùn tắc giao thông trên nền tảng
Android gồm có phần Server và Client cũng có cách làm tƣơng tự nhƣng với một
hƣớng tiếp cận mới đó là môi trƣờng Internet trên thiết bị di động. Điểm mạnh mà
biện pháp này mang lại là nâng cao tính trực quan, có thể truyền tải thông tin đến
với nhiều ngƣời, đây cũng là điều mà chƣơng trình VOV giao thông chƣa đáp ứng
đƣợc.
Trang 1
Tận dụng lợi thế về mạng Internet di động và dịch vụ Google Map trên các
điện thoại sử dụng nền tảng Android và để góp phần giải quyết có hiệu quả vấn đề
ùn tắc giao thông, em xin đề xuất đề tài luận văn: “Xây dựng hệ thống thông báo và
tìm các địa điểm ùn tắc giao thông trên nền tảng Android”
Mục tiêu của đề tài là cùng với chƣơng trình VOV giao thông đƣa thông tin
về ùn tắc giao thông đến với ngƣời tham gia giao thông một cách nhanh chóng, đầy
đủ bằng cách tận dụng mạng Internet di động và các điện thoại sử dụng nền tảng
Android.
Cũng tƣơng tự nhƣ kênh VOV, hệ thống sử dụng cùng nguồn thông tin nhƣ
VOV giao thông, có thể là các cộng tác viên, những ngƣời tham gia giao thông để
cung cấp kịp thời và đầy đủ thông tin về ùn tắc giao thông.
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Việc ứng dụng dịch vụ Google Maps và hệ thống định vị toàn cầu (GPS) để
hỗ trợ các phƣơng tiện giao thông đặc biệt là giao thông đƣờng bộ ở Việt Nam hiện
nay không nhiều, và đề tài này cũng đƣợc nghiên cứu và thực hiện bởi sinh viên
Đậu Thanh Hải thuộc trƣờng Đại học Công Nghệ – Đại học Quốc Gia Hà Nội vào
tháng 5 năm 2010. Hệ thống đƣợc tạo ra tuy chƣa đƣợc ứng dụng thực tế nhƣng về
lý thuyết đã mang lại cái nhìn trực quan hơn cho ngƣời dùng về trạng thái các điểm
nóng giao thông trên bản đồ. Mặc dù vậy, hệ thống chỉ dừng lại ở việc cho phép
ngƣời dùng tra cứu các điểm giao thông trên bản đồ mà chƣa thực hiện đƣợc việc tự
động tìm kiếm và thông báo về tình trạng của các điểm giao thông một cách linh
động đến với ngƣời dùng là những ngƣời trực tiếp tham gia giao thông.
1.3 PHẠM VI ĐỀ TÀI
Về mặt phân tích và thiết kế hệ thống: các mô hình phân tích thiết kế hệ
thống, mô hình cơ sở dữ liệu,... có khả năng xây dựng phần cơ sở dữ liệu cho ứng
dụng WebServer quản lý các địa điểm và các trạng thái của các điểm giao thông.
Về mặt lập trình: trên cơ sở nghiên cứu và áp dụng GoogleMaps API v2,
GPS, hoàn thành các chức năng chủ yếu sau:
Trang 2
— WebServer:
+ Hiểu và vận dụng thành công các lớp trong thƣ viện
GoogleMaps API v2.
+ Sử dụng PHP & MySQL kết hợp JavaScript để tạo các chức
năng cơ bản về quản lý các điểm giao thông.
— Phần mềm chạy trên thiết bị android:
+ Cung cấp đầy đủ thông tin về các địa điểm giao thông đến với
ngƣời dùng.
+ Xây dựng đƣợc các chức năng cho ngƣời dùng nhƣ: theo dõi vị
trí hiện tại, vị trí các điểm giao thông trên bản đồ, gửi và cập
nhật thông tin về điểm giao thông, tự động tìm kiếm hoặc tìm
kiếm điểm giao thông gần nhất khi ngƣời dùng có nhu cầu, thể
hiện khoảng cách và đƣờng đi ngắn nhất đến điểm giao thông
tìm đƣợc trên bản đồ.
+ Đảm bảo dữ liệu đƣợc tính toán tƣơng đối chính xác.
1.4 PHƢƠNG PHÁP NGHIÊN CỨU
— Nghiên cứu dịch vụ GoogleMaps và GPS thông qua mạng internet, từ
các diễn đàn về lập trình cho hệ điều hành android.
— Lập kế hoạch thực hiện đề tài:
Tuần
Thời gian
1
02/01/2012 đến 08/01/2012
2
09/01/2012 đến 15/01/2012
3
16/01/2012 đến 22/01/2012
4
23/01/2012 đến 29/01/2012
—
—
—
—
—
—
—
5
6
7
8
9
10
30/01/2012 đến 05/02/2012
06/02/2012 đến 12/02/2012
13/02/2012 đến 19/02/2012
20/02/2012 đến 26/02/2012
27/02/2012 đến 04/03/2012
05/03/2012 đến 11/03/2012
—
—
Nội dung
Liên hệ với GVHD.
Nghiên cứu dịch vụ Google Maps.
Phân tích hệ thống.
Thiết kế hệ thống.
Cài đặt và kiểm thử Web server
trên host ảo.
Triển khai và kiểm thử Web
server trên host thật.
Nghiên cứu Google Maps trên
điện thoại Android.
Nghiên cứu GPS.
Thiết kế giao diện cho phần mềm.
— Cài đặt chức năng và kiểm thử
phần mềm.
Trang 3
11
12
13
14
15
16
17
18
19
12/03/2012 đến 18/03/2012
19/03/2012 đến 25/03/2012
26/03/2012 đến 01/04/2012
02/04/2012 đến 08/04/2012
09/04/2012 đến 15/04/2012
16/04/2012 đến 22/04/2012
23/04/2012 đến 29/04/2012
30/04/2012 đến 06/05/2012
07/04/2012 đến 13/04/2012
—
—
—
—
—
—
Hoàn thiện phần mềm.
Viết báo cáo phần 1.
Viết báo cáo phần 2.
Viết báo cáo phần 3.
Hoàn thiện báo cáo.
Chuẩn bị slide báo cáo.
— Chuẩn bị báo cáo.
— Báo cáo luận văn.
1.5 BỐ CỤC LUẬN VĂN
`Nội dung chính của luận văn gồm 3 chƣơng:
— Chương 1: Tổng quan. Chƣơng này trình bày các vấn đề tổng quan bao gồm:
đặt vấn đề, lịch sử giải quyết vấn đề, phạm vi của đề tài, phƣơng pháp nghiên
cứu và hƣớng giải quyết vấn đề.
— Chương 2: Cơ sở lý thuyết. Chƣơng này giới thiệu sơ lƣợc về hệ thống định
vị toàn cầu GPS (Global Positioning System), thƣ viện GoogleMap API v2
và kỹ thuật lập trình trên nền tảng Android.
— Chương 3: Nội dung và kết quả nghiên cứu. Chƣơng này tập trung trình bày
các nội dung: kết quả phân tích thiết kế hệ thống, một số trƣờng hợp sử dụng
thƣ viện GoogleMaps API v2 để xây dựng WebServer và chƣơng trình ứng
dụng chạy trên thiết bị android 2.3.
Kết thúc luận văn bao gồm 2 nội dung:
— Kết luận và đề nghị: nội dung trình bày kết luận về toàn bộ nội dung đã
nghiên cứu và đề nghị rút ra từ kết quả nghiên cứu.
— Tài liệu tham khảo: trình bày danh mục các tài liệu tham khảo.
Trang 4
CHƢƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 TỔNG QUAN VỀ ANDROID
2.1.1 Giới thiệu về android
Android là một ngăn phần mềm cho các thiết bị di động bao gồm một hệ điều
hành, middleware và các ứng dụng quan trọng. Android SDK cung cấp các công cụ
và API cần thiết để bắt đầu phát triển các ứng dụng trên nền tảng Android bằng
cách sử dụng ngôn ngữ lập trình Java.
Những đặc tính của android:
— Ứng dụng framework cho phép tái sử dụng và thay thế các thành phần.
— Máy ảo Dalvik đƣợc tối ƣu hóa cho các thiết bị di động.
— Các thƣ viện cho phát triển ứng dụng mã nguồn mở bao gồm SQLite,
WebKit, OpenGL và trình quản lý đa phƣơng tiện.
— Hỗ trợ các chuẩn đa phƣơng tiện phổ biến (MPEG4, H.264, MP3, AAC,
AMR, JPG, PNG, GIF), thoại trên nền GSM, Bluetooth, EDGE, 3G và Wifi.
— Hỗ trợ Camera, GPS, la bàn, đ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.
2.1.2 Nền tảng android
2.1.2.1 Kiến trúc các tầng phần mềm của android
Cấu trúc của Android đƣợc chia theo tầng các phần mềm bao gồm tầng ứng
dụng(Application Layer), Ứng dụng khung (Application Framework), các thƣ viện
(Libraries), Android Runtime và nhân Linux (Linux Kernel).
Mô hình ở trang bên sẽ cho thấy các thành phần chính của android.
Trang 5
Hình 2.1.2.1.1: Kiến trúc các tầng phần mềm của Android.
— Tầng ứng dụng (Application): Tất cả các ứng dụng, bao gồm ứng dụng sẵn
có và ứng dụng từ nhà cung cấp thứ 3 đƣợc xếp vào tầng Ứng dụng với cùng một
thƣ viện các giao diện lập trình(API). Tầng ứng dụng chạy trong Android Runtime
(Dalvik) sử dụng các lớp và dịch vụ có sẵn trong lớp Ứng dụng khung.
— Tầng ứng dụng khung (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 vô cùng phong phú và sáng tạo. Các nhà phát triển tận dụng
miễn phí các lợi thế của thiết bị phần cứng, truy cập thông tin về vị trí, chạy các
dịch vụ nền, thiết lập hệ thống báo động, thêm các thông báo trên thanh trạng
thái,...Nhà phát triển có thể truy cập vào các API cùng nền tảng đƣợc sử dụng bởi
các ứng dụng cốt lõi. Các kiến trúc ứng dụng đƣợc thiết kế đơn giản hóa việc tái sử
dụng các thành phần. Bên dƣới tất cả các ứng dụng là một tập các dịch vụ và hệ
thống bao gồm:
Trang 6
+ Một tập hợp nhiều thành phần của View dùng để xây dựng ứng dụng bao
gồm: lists, grids, text boxes, buttons,…
+ Content Provider cho phép ứng dụng truy cập dữ liệu từ một ứng dụng
khác, hoặc chia sẽ dữ liệu của chính nó.
+ Resource Manager truy cập các tài nguyên nhƣ: chuỗi, đồ họa, các tập
tin layout,...
+ Notification Manager cho phép tất cả các ứng dụng hiển thị các thông
báo tùy chọn trong thanh trạng thái.
+ Activity Manager quản lý vòng đời của ứng dụng.
— Android Runtime: Bao gồm máy ảo Dalvik và các thƣ viện Android.
+ Các thƣ viện cơ bản: Các ứng dụng Android đƣợc phát triển trên môi
trƣờng Java, nhƣng Dalvik lại không phải là một Java VM. Các thƣ viện cơ bản của
Android cung cấp hầu hết các chức năng có trong thƣ viên cơ bản của Java cũng
nhƣ là thƣ viện riêng của Android.
+ Máy ảo Dalvik: Dalvik là máy ảo để chạy các ứng dụng trên Android,
đã đƣợc tối ƣu để đảm bảo rằng một thiết bị có thể chạy đƣợc nhiều Instance một
cách hiệu quả. Nó dựa vào nhân Linux để thực hiện đa luồng và quản lý bộ nhớ cấp
thấp.
— Linux Kernel: Android dựa trên Linux phiên bản 2.6 cho các dịch vụ hệ
thống cốt lõi nhƣ bảo mật, quản lý bộ nhớ, quản lý tiến trình, ngăn xếp mạng và mô
hình điều khiển. Nhân cũng đóng vai trò nhƣ một lớp trừu tƣợng giữa phần cứng và
các phần còn lại.
2.1.2.2 Kiến trúc của một ứng dụng android
Nhƣ đã đề cập, Android chạy ở trên một nhân Linux. Các ứng dụng android
đƣợc viết bằng ngôn ngữ lập trình Java và chạy trong một máy ảo. Điều quan trọng
cần lƣu ý là máy ảo mà ứng dụng android chạy không phải là JVM (Java Virtual
Machine) mà là Dalvik Virtual Machine (Dalvik VM), một công nghệ mã nguồn
mở. Mỗi ứng dụng Android chạy trong một thể hiện của Dalvik VM, mà tại đây tập
trung một quá trình quản lý nhân Linux nhƣ hình ở trang bên:
Trang 7
Linux Kernel
Linux Process
Dalvik VM
Android Application
Hình 2.1.2.2.1: Mô hình mô tả một ứng dụng Android chạy trong máy ảo
Dalvik
Dƣới đây là một số lớp đặc trƣng của ứng dụng Android:
— Activity:
Là một thành phần của ứng dụng, cung cấp một màn hình mà ngƣời dùng có
thể tƣơng tác để làm một công việc gì đó nhƣ: quay số điện thoại, chụp ảnh, gửi
mail hoặc xem bản đồ,...Giao diện màn hình của mỗi Activity đƣợc quy định bởi
một cửa sổ, cửa sổ này thƣờng đƣợc lấp đầy màn hình, có thể nhỏ hơn màn hình và
nổi lên trên các cửa sổ khác.
Một ứng dụng thƣờng bao gồm nhiều Activity đƣợc liên kết với nhau, trong
đó có một Activity là một Activity chính, đƣợc hiện ra đầu tiên khi chạy ứng dụng,
mỗi Activity khác có thể thực hiện các hoạt động khác nhau. Khi một Activity đƣợc
bắt đầu, các Activity khác đƣợc dừng lại, nhƣng hệ thống sẽ giữ các Activity đó
trong một ngăn xếp (back stack), khi một Activity khác đƣợc bắt đầu, thì Activity
trƣớc đó sẽ đƣợc đƣa vào ngăn xếp, do ngăn xếp là “back stack”, tuân thủ qui tắc
“vào sau, ra trƣớc” nên các Activity đƣợc đƣa vào ngăn xếp sau cùng so với
Activity hiện tại sẽ đƣợc gọi trở lại khi ngƣời dùng nhấn nút “Back”, và các
Activity khác trong ngăn xếp cũng tƣơng tự.
Trang 8
Quản lý vòng đời của Activity bằng phƣơng pháp gọi lại là rất quan trọng để
phát triển một ứng dụng mạnh mẽ và linh hoạt, vòng đời của một Activity bị ảnh
hƣởng trực tiếp bởi các Activity khác, công việc của nó và ngăn xếp.
Một Activity có thể tồn tại 3 trạng thái cơ bản sau:
+ Resumed hay running: Activity nổi lên trên màn hình và ngƣời dùng
có thể tƣơng tác.
+ Paused: Activity không còn giữ trọng tâm của màn hình mà bị thay
thế bởi một Activity khác, nhƣng nó vẫn còn sống và hiển thị cho
ngƣời dùng thấy, dữ liệu của Activity cũng còn đƣợc giữ nguyên
nhƣng có thể bị hủy bởi hệ thống trong các tình huống bộ nhớ đầy.
+ Stopped: Activity hoàn toàn bị che khuất bởi Activity khác và rơi vào
trạng thái dừng nhƣng nó vẫn còn sống và duy trì các đối tƣợng cũng
nhƣ các thông tin trạng thái và cũng có thể bị hủy bởi hệ thống khi bộ
nhớ cần cấp cho nơi khác.
Khi một Activity chuyển từ trạng thái này sang trạng thái kia thì hệ thống sẽ
thực hiện các phƣơng thức gọi lại (callback) nhƣ sau:
void onCreate(Bundle saveInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
Sơ đồ ở trang bên mô tả việc chuyển trạng thái của một Activity.
Trang 9
Hình 2.1.2.2.2: Sơ đồ chuyển trạng thái của Activity.
Trang 10
— Services:
Là thành phần của ứng dụng có thể thực hiện một hay nhiều công việc
trong thời gian dài trong nền của ứng dụng và không cung cấp một giao diện ngƣời
dùng. Một thành phần khác của ứng dụng có thể bắt đầu một dịch vụ và nó sẽ tiếp
tục chạy nền ngay cả khi ngƣời dùng chuyển sang ứng dụng khác. Ngoài ra một
thành phần có thể liên kết với một dịch vụ để tƣơng tác với nó và thậm chí có thể xử
lý các giao dịch mạng, chơi nhạc, thực hiện truy xuất file,...
Một dịch vụ có thể có 2 hình thức:
+ Started:
Một dịch vụ đƣợc bắt đầu khi một thành phần (có thể là Activity) bắt
đầu nó bằng cách gọi startService(). Sau khi bắt đầu, một dịch vụ có thể
chạy nền vô thời hạn, ngay cả khi các thành phần bắt đầu bị hủy.
+ Bound:
Một dịch vụ đƣợc ràng buột (bound) khi một thành phần của ứng
dụng liên kết với nó gọi bindService(). Một dịch vụ bị ràng buột cung cấp
một giao diện client-server cho phép các thành phần tƣơng tác với dịch vụ,
gửi yêu cầu, nhận kết quả,...Nhiều thành phần của ứng dụng có thể liên kết
với các dịch vụ cùng lúc, nhƣng dịch vụ sẽ bị hủy nếu các liên kết bị phá
hủy.
Vòng đời của Service đơn giản hơn vòng đời của Activity, một dịch vụ từ
khi đƣợc tạo ra đến khi bị hủy có thể theo 2 con đƣờng khác nhau nhƣ sau:
+ Dịch vụ đƣợc bắt đầu:
Dịch vụ này đƣợc tạo ra khi một thành phần gọi startService(). Sau đó
nó chạy vô thời hạn và phải ngăn chặn bằng cách gọi stopSelf(). Một thành
phần khác cũng có thể dừng dịch vụ bằng cách gọi stopService(). Khi dịch
vụ dừng lại, hệ thống sẽ hủy nó.
+ Dịch vụ đƣợc liên kết:
Dịch vụ này đƣợc tạo ra khi một thành phần khác (client) gọi
bindService(). Client sau đó giao tiếp với các dịch vụ thông qua một giao
diện Ibinder. Các client có thể đóng kết nối bằng cách gọi unbindService().
Nhiều client có thể liên kết với các dịch vụ tƣơng tự và khi tất cả chúng hủy
Trang 11
kết nối thì hệ thống sẽ hủy dịch vụ mà các dịch vụ không cần phải dừng lại
chính nó.
Cũng giống nhƣ Activity, các dịch vụ cũng gọi phƣơng thức callback khi
thay đổi trạng thái.
Hình 2.1.2.2.3: Vòng đời dịch vụ. Sơ đồ bến trái cho thấy vòng đời khi dịch vụ
đƣợc tạo ra với startService() và sơ đồ bên phải cho thấy vòng đời khi dịch vụ đƣợc
tạo ra với bindService().
Trang 12
- Xem thêm -