Phần mềm hỗ trợ thông báo thông tin giao thông trên nền tảng android

  • Số trang: 60 |
  • Loại file: PDF |
  • Lượt xem: 13 |
  • Lượt tải: 0
minhtuan

Đã đăng 15929 tài liệu

Mô tả:

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 -