Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
1,67 MB
Nội dung
ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN (Học kỳ : 02, Năm học 2011-2012) TÊN ĐỀ TÀI: LẬP TRÌNH GAME SUDOKU TRÊN ANDROID GIÁO VIÊN HƯỚNG DẪN: STT HỌ VÀ TÊN NGUYỄN CÔNG HUY MSCB 1168 SINH VIÊN THỰC HIỆN: HỌ VÀ TÊN Nguyễn Văn Đủ MSSV THƯỞNG (Tối đa 1,0 điểm) ĐIỂM (thang điểm 10) 1081378 I HÌNH THỨC (0,5 điểm) Bìa (tối đa 0,25 điểm) Đầy đủ thông tin Đúng định dạng Bố cục (tối đa 0.25 điểm) Trang đánh giá kết thực niên luận Mục lục: cấu trúc chương, mục tiểu mục Phụ lục (nếu có) Tài liệu tham khảo II NỘI DUNG (3,5 điểm) Giới thiệu (tối đa 1,0 điểm) Mô tả toán (0,5 điểm) Mục tiêu cần đạt, hướng giải (0,5 điểm) Ứng dụng (tối đa 2,0 điểm) Phân tích yêu cầu, mô hình MCD-MLD (nếu có) ràng buộc toàn vẹn (0.5 điểm) Sơ đồ chức năng, lưu đồ giải thuật giải vấn đề (0.5 điểm) Diễn giải hình (Form), báo biểu (report) (0.5 điểm) Giới thiệu sử dụng Hệ thống (0,5 điểm) Kết luận (tối đa 0,5 điểm) Nhận xét kết đạt Hạn chế Hướng phát triển III CHƯƠNG TRÌNH DEMO (5,0 điểm) Giao diện thân thiện với người dùng (0,5 điểm) Hướng dẫn sử dụng (0,5 điểm) Kết thực với kết phần ứng dụng (tối đa 4,0 điểm) Cài đặt CSDL với ràng buộc toàn vẹn (1,0 điểm) Các Form thực (1,5 điểm) Các báo biểu (report) hợp lý (1,0 điểm) Chức bổ sung, sáng tạo (0,5 điểm) Cần Thơ, ngày tháng … năm 2012 Giáo Viên Chấm Nguyễn Công Huy -1- MỤC LỤC Contents ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN MỤC LỤC PHẦN TỔNG QUAN CHƯƠNG TỔNG QUAN GIỚI THIỆU VÀ TÌM HIỂU ĐỀ TÀI 1.1 MÔ TẢ ĐỀ TÀI 1.2 MỤC TIÊU CẦN ĐẠT ĐƯỢC 1.3 HƯỚNG GIẢI QUYẾT 1.4 KẾ HOẠCH THỰC HIỆN 1.5 CÔNG CỤ PHÁT TRIỂN PHẦN CƠ SỞ LÝ THUYẾT CHƯƠNG CÁC KHÁI NIỆM 2.1 SƠ LƯỢC QUÁ TRÌNH PHÁT TRIỂN CỦA ANDROID 2.1.1 Android gì? 2.1.2 Lịch sử đời 2.1.3 Tính mở hệ điều hành Android 2.1.4 Tất ứng dụng tạo cho Android? 2.1.5 Cộng đồng phát triển Android: 2.2 DELVING VỚI MÁY ẢO DALVIK 2.3 KIẾN TRÚC CỦA ANDROID : 2.3.1 Tầng ứng dụng 2.3.2 Application framework 2.3.3 Library 2.3.4 Android Runtime 2.3.5 Linux kernel 2.4 ANDROID EMULATOR 2.5 CÁC THÀNH PHẦN TRONG MỘT ANDROID PROJECT 2.5.1 AndroidManifest.xml 2.5.2 File R.java 2.6 CÁC THÀNH PHẦN CHÍNH VÀ CHU KỲ CỦA MỘT ỨNG DỤNG ANDROID 2.6.1 Các thành phần ứng dụng Android 2.6.2 Chu kỳ sống ứng dụng Android -2- 3 3 4 6 6 6 6 7 8 9 10 10 11 12 13 16 PHẦN TỔNG QUAN CHƯƠNG TỔNG QUAN GIỚI THIỆU VÀ TÌM HIỂU ĐỀ TÀI 1.1 MÔ TẢ ĐỀ TÀI Ngày nay, với phát triển công nghệ, đặc biệt lĩnh lực công nghệ thông tin đem lại nhiều thành tựu phục vụ nhu cầu người văn hóa, giáo dục, an ninh quốc phòng….Đặc biệt lĩnh vực di động góp phần mang lại nhiều lợi ích cho người, dễ dàng thuận tiện liên lạc với dù xa làm giảm phi lại chất xúc tác cho phép kết nối nơi cập nhật tức Ở Việt Nam, năm trước người dụng điện thoại di động hạn chế chưa phổ biến rộng rải, vài năm trở lại đây, nhu cầu sử dụng điện thoại di động tăng cao người ngày đỏi hỏi điện thoại di động không chi dùng để liện lạc mà phải dùng để giải trí thu thập thông tin, đọc tin tức, nghe nhạc chơi game… Và từ game điện thoại di động xuất ngày nhiều, hệ điều hành khác Android, iOS, RIM Blackberry OS, Symbian… Và Android hệ điều hành Google mua cho đời vào năm 2007, hệ điều hành tương đối ưa chuộng thị trường từ đời, niên luận em định làm đề tài “Lập trình game sudoku Android” Hi vọng sau em làm xong đề tài em có số kiến thức hệ điều hành Android cách lập trình ứng dụng cho hệ điều hành ưa chuộng thị trường, để giúp ích em sau trường làm Mô tả sơ lược hệ thống: Ứng dụng game Sudoku giao diện gồm button Bắt Đầu, Tiếp Tục, • Hướng Dẫn, Thoát Và button chia thành cột cột gồm button Giao diện bàn game gồm có 9x9 ô số hàng cột, chia thành • 3x3 vùng, vùng gồm số từ đến Khi người chơi chưa biết luật chơi người chơi nhấp vào button Hướng • Dẫn dialog hướng dẫn cụ thể luật cách chơi game Ứng dụng game có mức người dùng chơi gồm Dễ, Bình Thường • Khó, với mức chơi có ô số khác phù hợp với mức Khi người chơi nhập số vào ô số số vùng có • hàng cột có hình rung qua lại thông báo cho người chơi biết số nhập vào Khi người chơi nhập số vào ô, muốn xóa người dùng nhấn tổ • hợp phím Ctrl+Space xóa số nhập vào 1.2 MỤC TIÊU CẦN ĐẠT ĐƯỢC -3- Ứng dụng game phải đạt yêu cầu sau: Giao diện hài hòa, thân thiện, dễ sữ dụng Phải có menu hướng dẫn người chơi luật chơi cách chơi game Game phải có mức chơi cho người chơi lựa chọn Ở mức độ chơi độ khó phải tương ứng với mức độ chơi Khi người chơi nhập số vào ô 1.3 HƯỚNG GIẢI QUYẾT Tìm hiểu ngôn ngữ XML, Java, Cách cài đặt Android SDK, cách plugin Android SDK cho eclipse Cách tạo máy ảo Android Virtual Device Cài đặt chương trình : o Với yêu cầu đề tài, ta cần thực vấn đề sau: i Thiết kế giao diện chức cần thiết chương trình ii Đề tài thực phạm vi nhỏ nên hết chức chương trình, hoàn chỉnh tất yêu cầu chương trình bao gồm nhiều công viêc o Giao diện chương trình gồm : i Button Bắt đầu ii Button Tiếp tục iii Button Hướng dẫn iv Button Thoát v Hình chương trình o Giao diện lúc chơi game : i Bàn game gồm 9x9 ô số ii Mỗi hàng, cột vùng gồm số Viết báo cáo tổng hợp kết thực đề tài 1.4 KẾ HOẠCH THỰC HIỆN Đề tài thực sau: Tuần Công việc thực Nhận đề tài, viết mô tả chi tiết đề tài xếp công việc Phân tích đề tài Phân tích hệ thống, thiết kế giao diện Phân tích hệ thống, thiết kế giao diện Viết code chương trình 10 Viết code chương trình 11 Viết code chương trình 12 Viết code chương trình 13 14 15 16 -4- Ghi 17 1.5 CÔNG CỤ PHÁT TRIỂN Android SDK (installer_r16-windown.exe) tập hợp công cụ để phát • triển ứng dụng tảng hệ điều hành Android Công cụ phát triển: Eclipse IDE for Java Developers dùng để viết code • cho game -5- PHẦN CƠ SỞ LÝ THUYẾT CHƯƠNG CÁC KHÁI NIỆM 2.1 SƠ LƯỢC QUÁ TRÌNH PHÁT TRIỂN CỦA ANDROID 2.1.1 Android gì? • Là hệ thống điều hành, middleware ứng dụng di động chủ chốt Android hệ điều hành điện thoại di động (và • số đầu phát HD, HD Player, TV) phát triển Google dựa tảng Linux 2.1.2 Lịch sử đời Trước đây, Android phát triển công ty liên hợp Android ( sau Google mua lại vào năm 2005) Sự mắt Android vào ngày tháng 11 năm 2007 gắn với thành lập liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm viễn thông nhằm mục đính tạo nên chuẩn mở cho điện thoại di động tương lai 2.1.3 Tính mở hệ điều hành Android Android xây dựng phép nhà phát triển để tạo ứng dụng di động hấp dẫn tận dụng tất điện thoại cung cấp Nó xây dựng để thực mở Ví dụ, ứng dụng kêu gọi chức lõi điện thoại thực gọi, gửi tin nhắn văn bản, cách sử dụng máy ảnh, cho phép nhà phát triển để tạo phong phú nhiều kinh nghiệm cố kết cho người dùng Android xây dựng mở Linux Kernel Hơn nữa, sử dụng máy ảo tuỳ chỉnh thiết kế để tối ưu hóa nhớ tài nguyên phần cứng môi trường di động Android mã nguồn mở, liberally mở rộng Nền tảng tiếp tục tiến triển cộng đồng nhà phát triển công việc để xây dựng ứng dụng di động sáng tạo 2.1.4 Tất ứng dụng tạo cho Android? Android không phân biệt ứng dụng lõi điện thoại ứng dụng bên thứ ba Họ tất xây dựng để truy cập khả người cung cấp cho người sử dụng điện thoại với dải rộng ứng dụng dịch vụ Với thiết bị xây dựng Hệ điều hành Android, người dùng hoàn toàn thích ứng với điện thoại đến lợi ích họ Họ trao đổi hình điện thoại, phong cách dialer, ứng dụng Họ chí hướng dẫn điện thoại họ để sử dụng hình ảnh ưa thích họ xem ứng dụng để xử lý xem tất hình ảnh 2.1.5 Cộng đồng phát triển Android: Android có cộng đồng phát triển ứng dụng lớn, có khoảng 70.000 ứng dụng có sẵn cho Android liên tục cập nhật Ứng dụng phát triển ngôn ngữ Java kết hợp với thư viện Java có sẵn Google Các nhà phát triển ứng dụng sử dụng máy tính chạy hệ điều hành Windows MacOS Linux -6- kết hợp với Android SDK để phát triển ứng dụng cho Android Hệ điều hành Android bao gồm 12.000.000 dòng mã có 3.000.000 dòng XML, 2.800.000 dòng C, 2.100.000 dòng Java, 1.750.000 dòng C + + 2.2 DELVING VỚI MÁY ẢO DALVIK Dalvik máy ảo giúp ứng dụng java chạy thiết bị động Android Nó chạy ứng dụng chuyển đổi thành file thực thi Dalvik (dex) Định dạng phù hợp cho hệ thống mà thường bị hạn chế nhớ tốc độ xử lý Dalvik trông giống máy ảo Java (Java Virtual Machine) thực tế hoàn toàn khác gốc nhìn nhà phát triển Khi nhà phát triển viết ứng dụng dành cho Android, thực đoạn mã môi trường Java Sau đó, biên dịch sang bytecode Java, nhiên để thực thi ứng dụng Android nhà phát triển phải thực thi công cụ có tên dx Đây công cụ dùng để chuyển đổi bytecode sang dạng gọi dex bytecode "Dex" từ viết tắt "Dalvik executable" đóng vai trò chế ảo thực thi ứng dụng Android 2.3 KIẾN TRÚC CỦA ANDROID : Mô hình sau thể cách tổng quát thành phần hệ điều hành Android Mỗi phần đặc tả cách chi tiết Hình 2.1: Cấu trúc stack hệ thống Android 2.3.1 Tầng ứng dụng -7- Android tích hợp sẵn số ứng dụng cần thiết như: contacts, browser, camera, Phone,… Tất ứng dụng chạy hệ điều hành Android viết Java 2.3.2 Application framework Bằng cách cung cấp tảng phát triển mở, Android cung cấp cho nhà phát triển khả xây dựng ứng dụng phong phú sáng tạo Nhà phát triển tự tận dụng thiết bị phần cứng, thông tin địa điểm truy cập, dịch vụ chạy nền, thiết lập hệ thống báo động, thêm thông báo để trạng thái, nhiều, nhiều Nhà phát triển truy cập vào API khuôn khổ sử dụng ứng dụng lõi Các kiến trúc ứng dụng thiết kế để đơn giản hóa việc sử dụng lại thành phần; ứng dụng xuất khả ứng dụng khác sau sử dụng khả (có thể hạn chế bảo mật thực thi khuôn khổ) Cơ chế cho phép thành phần tương tự thay người sử dụng Cơ tất ứng dụng dịch vụ hệ thống, bao gồm: Một tập hợp nhiều View có khả kế thừa lẫn • dùng để thiết kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,… Một “Content Provider” cho phép ứng dụng • truy xuất liệu từ ứng dụng khác (chẳng hạn Contacts) chia sẻ liệu ứng dụng Một “Resource Manager” cung cấp truy xuất tới tài • nguyên mã nguồn, chẳng hạn như: localized strings, graphics, and layout files Một “Notifycation Manager” cho phép tất ứng • dụng hiển thị custom alerts status bar • Activity Maanager dùng để quản lý chu trình sống ứng dụng điều hướng activity 2.3.3 Library Android bao gồm tập hợp thư viên C/C++ sử dụng nhiều thành phần khác hệ thống Android Điều thể thông qua tảng ứng dụng Android Một số thư viện liệt kê đây: System C library: a BSD-derived implementation of the • standard C system library (libc), tuned for embedded Linux-based devices Media Libraries - based on PacketVideo's OpenCORE; • the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị • LibWebCore - a modern web browser engine which • powers both the Android browser and an embeddable web view SGL - the underlying 2D graphics engine • -8- 3D libraries - an implementation based on OpenGL • ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer FreeType - bitmap and vector font rendering • SQLite - a powerful and lightweight relational database engine available to all applications 2.3.4 Android Runtime Android bao gồm tập hợp thư viện mà cung cấp hầu hết chức có sẵn thư viện lõi ngôn ngữ lập trình Java Tất ứng dụng Android chạy tiến trình riêng Máy ảo Dalvik viết thiết bị chạy nhiều máy ảo hiệu Các VM Dalvik thực thi tập tin thực thi Dalvik (dex) Định dạng tối ưu hóa cho nhớ tối thiểu VM dựa register-based, chạy lớp biên dịch trình biên dịch Java để chuyển đổi thành định dạng dex Các VM Dalvik dựa vào nhân Linux cho chức luồng quản lý nhớ thấp 2.3.5 Linux kernel Android dựa Linux phiên 2.6 cho hệ thống dịch vụ cốt lõi security, memory management, process management, network stack, and driver model Kernel Linux hoạt động lớp trừu tượng hóa phần cứng phần lại phần mềm stack 2.4 ANDROID EMULATOR Android SDK Plugin Eclipse gọi Android Deverloper Tool (ADT) Các Android coder cần phải sử dụng công cụ IDE (Integrated Development Enveronment) để phát triển, debugging testing cho ứng dụng Tuy nhiên, coder không cần phải sử dụng IDE mà thay vào sử dụng command line để biên dịch tất nhiên có Emulator thường Android Emulator trang bị đầy đủ hầu hết tính thiết bị thật Tuy nhiên, số bị giới hạn kết nối qua cổng USB, camera video, nghe phone, nguồn điện giả lập bluetooth Android Emulator thực công việc thông qua xử lý mã nguồn mở, công nghệ gọi QEMU (http://bellard.org/qemu/) phát triển Fabrice Bellard -9- Hình 2.2: Android Emulator 2.5 CÁC THÀNH PHẦN TRONG MỘT ANDROID PROJECT 2.5.1 AndroidManifest.xml Trong project Android tạo có file AndroidManifest.xml, file dùng để định nghĩa screen sử dụng, permission theme cho ứng dụng Đồng thời chứa thông tin phiên SDK main activity chạy File tự động sinh tạo Android project Trong file manifest có thành phần là: application, permission version Dưới nội dung file AndroidManifest.xml - 10 - • Application Bên thẻ có thuộc tính định nghĩa cho Android sau: android:icon="@drawable/ic_launcher": Chỉ đường dẫn đến file icon cài đặt ứng dụng android:label="@string/app_name": Thuộc tính đặt tên cho ứng dụng Tên hiển thị sau chạy ứng dụng Ngoài có nhiều thuộc tính khác… • SDK version (API) : Thẻ xác định phiên SDK sử dụng Ở SDK version 2.5.2 File R.java File R.java file tự động sinh tạo ứng dụng, file sử dụng để quản lý thuộc tính khai báo file XML ứng dụng tài nguyên hình ảnh Mã nguồn file R.java tự động sinh có kiện xảy xa làm thay đổi thuộc tính ứng dụng Chẳng hạn như, bạn kéo thả file hình ảnh từ bên vào project thuộc tính đường dẫn đến file hình thành file R.java xoá file hình ảnh đường dẫn tương ứng đến hình ảnh tự động bị xoá Có thể nói file R.java hoàn toàn không cần phải đụng chạm đến trình xây dựng ứng dụng Dưới nội dung file R.java: /* AUTO-GENERATED FILE DO NOT MODIFY * * This class was automatically generated by the * aapt tool from the resource data it found It * should not be modified by hand */ package org.me.mysudokugame; - 11 - public final class R { public static final class anim { public static final int cycle_7=0x7f040000; public static final int shake=0x7f040001; } public static final class array { public static final int difficulty=0x7f050000; } public static final class attr { } public static final class color { public static final int background=0x7f060000; public static final int puzzle_background=0x7f060003; public static final int puzzle_dark=0x7f060006; public static final int puzzle_foreground=0x7f060007; public static final int puzzle_hilite=0x7f060004; public static final int puzzle_hint_0=0x7f060008; public static final int puzzle_hint_1=0x7f060009; public static final int puzzle_hint_2=0x7f06000a; public static final int puzzle_light=0x7f060005; public static final int puzzle_selected=0x7f06000b; public static final int text_button=0x7f060002; public static final int text_title=0x7f060001; } public static final class drawable { public static final int ic_launcher=0x7f020000; public static final int sudoku=0x7f020001; } public static final class id { public static final int about_game=0x7f080002; public static final int continue_game=0x7f080001; public static final int exit_game=0x7f080003; public static final int new_game=0x7f080000; } public static final class layout { public static final int about=0x7f030000; public static final int difficulty=0x7f030001; public static final int main=0x7f030002; } public static final class string { public static final int about=0x7f070007; public static final int about_lable=0x7f070005; public static final int about_title=0x7f070008; public static final int app_name=0x7f070002; public static final int continue_lable=0x7f070004; public static final int easy=0x7f07000a; public static final int exit_lable=0x7f070006; public static final int game_title=0x7f07000d; public static final int hard=0x7f07000c; public static final int kho=0x7f070000; public static final int main_title=0x7f070001; public static final int medium=0x7f07000b; public static final int new_game_lable=0x7f070003; public static final int start_game=0x7f070009; } } 2.6 CÁC THÀNH PHẦN CHÍNH VÀ CHU KỲ CỦA MỘT ỨNG DỤNG ANDROID - 12 - 2.6.1 Các thành phần ứng dụng Android 2.6.1.1 Activity : Activity bốn thành phần đóng vai trò quan trọng ứng dụng Android Activity tảng ứng dụng Hệ điều hành Android quản lý Activity theo dạng stack : Activity khởi tạo, xếp lên đầu stack trở thành running activiyt, activity trước bị tạm dừng hoạt động trở lại activity giải phóng Khi khởi động ứng dụng Android có main Activity gọi, hiển thị hình giao diện ứng dụng cho phép người dùng tương tác Một ứng dụng thường bao gồm nhiều activity ràng buộc với Thông thường, activity ứng dụng quy định activity chính, trình bày cho người dùng chạy ứng dụng cho lần Mỗi activity sau bắt đầu activity khác để thực hành động khác Mỗi lần activity bắt đầu, activity trước dừng lại activity bắt đầu, đẩy lên phía sau ngăn xếp Sự xếp ngăn xếp tuân thủ chế vào sau trước chế hàng đợi, người dùng thực thi với activity nhấn phím BACK khởi động phá hủy activity trước Mỗi Activity chủ yếu có trạng thái chu kỳ sau : o Activity running : Khi activity chạy hình Activity tập trung vào thao tác người dùng ứng dụng o Paused : Activity tạm dựng quyền hoạt động người dùng trông thấy, có nghĩa activity không phủ hết hình Một activity tạm dừng sống bị kết thúc hệ thống trường hợp thiếu vùng nhớ o Stopped : Nếu stopped hoàn toàn chứa Activity khác trạng thái thông tin thành viên Người dùng không nhing thấy thường bị loại vỏ trường hợp hệ thống cần vùng nhớ cho tác vụ khác a Các phương thức xử lý Activity Create Activity() : Phương thức triển khai hệ thống chạy bắt đầu khởi tạo Activity khởi động ứng dụng nơi mà gọi setContentView() để xác định việc layout cho giao diện người dùng Activity Start Activity() : Khi làm việ ứng dụng người dùng người dùng cần khởi động Activity cách tạo Intent rõ ràng xác định Activity mà người dùng muốn bắt đầu Ví dụ, cách Activity bắt đầu Activity khác có tên SignInActivity : Intent intent = new Intent(MainActivity.this,Game.class); intent.putExtra(Game.KEY_DIFFICULTY,i); startActivity(intent); - 13 - Đóng Activity : Người dùng đóng Activity cách gọi phương thúc finish() Tất nhiên, đóng Activity riêng biệt trước bắt đầu cách gọi finishActivity() Hình 2.2: Android Emulator b Activity Stack : Bên hệ thống Activity quản lý Activity stack Khi Activity start, đặt đỉnh stack trở thành Activity chạy Activity trước bên Activity không thấy suốt trình Activity tồn Nếu người dùng nhấn nút Back Activity stack di chuyển lên trở thành active - 14 - Hình 2.2: Activity Stack Tính liên lạc Activity Khi di chuyển sang Activity khác gửi kèm liệu Intent sau : intent.putExtra(Game.KEY_DIFFICULTY,i); Bên phía Activity khởi động hay di chuyển đến, lấy liệu gửi sau : Int diff = getIntent().getIntExtra(KEY_DIFFICULTY,DIFFICULTY_EASY); 2.6.1.2 Intent a Khái niệm Intent : - Là cấu trúc liệu mô tả cách thức, đối tượng thực Activity - Là cầu nối Activity : Ứng dụng Android thường bao gồm nhiều Activity, Activity hoạt động độc lập với thực công việc khác Intent người đưa thư, giúp Activity triệu gọi truyền liệu cần thiết tới Activity khác Hình 2.2: Truyền liệu Activity b Dữ liệu Intent : Intent cấu trúc liệu, mô tả lớp android.content.Intent - Các thuộc tính đối tượng Intent : - 15 - Hình 2.2: Các thuộc tính Intent Đây String định nghĩa sẵn lớp Intent Đi kèm với Activity hay Application xây dựng sẵn triệu gọi Intent tương ứng gửi (tất nhiên cung cấp data) Ngoài các thành phần quan trọng khác : Service (Android.app.Service): cung cấp dịch vụ liên quan đến client/ service Một Service chạy ngầm bên dưới, sau client (Activity) kết nối truy xuất hàm dịch thông qua Interface class Broadcast receiver (Android.content.BroadcastReceiver): ứng dụng chạy ngầm dùng để đọc cập nhật thông tin UI, ví dụ cập nhật thay đỗi giờ, pin Content Provider: cung cấp chức truy vấn liệu ứng dụng Android 2.6.2 Chu kỳ sống ứng dụng Android Một tiến trình Linux gói gọn ứng dụng Android tạo cho ứng dụng codes cần xây dựng, khởi chạy chạy khi: Nó không phụ thuộc Hệ thống cần lấy lại nhớ mà chiếm giữ cho ứng dụng khác Một khác thường đặc tính Android thời gian sống tiến trình ứng dụng không điều khiển trực tiếp Thay vào đó, xác định hệ thống qua kết hợp của: Những phần ứng dụng mà hệ thống biết chạy Những phần quan trọng người dùng Bao nhiêu vùng nhớ chiếm lĩnh hệ thống 2.6.2.1 Chu kỳ sống thành phần - 16 - Các thành phần ứng dụng có chu kỳ sống, tức thành phần từ lúc bắt đầu khởi tạo đến thời điểm kết thúc, đôi lúc chúng active (visible invisible) inactive 2.6.2.2 Các trạng thái chu kỳ sống Một Activity chủ yếu có chu kỳ sau: Active running: Khi Active chạy hình Activity tập trung vào thao tác người dùng ứng dụng Paused: Activity tạm dừng (paused) focus người dùng trông thấy Có nghĩa Activity không bao phủ đầy hình Một Activity tạm dừng sống bị kết thúc hệ thống trường hợp thiếu vùng nhớ Hình 2.2: Chu kỳ sống Activity Stopped: Nếu hoàn toàn bao phủ Activity khác Nó trạng thái thông tin thành viên Người dùng không thấy thường bị loại bỏ trường hợp hệ thống cần vùng nhớ cho tác vụ khác Killed: Khi hệ thống bị thiếu nhớ, giải phóng tiến trình theo nguyên tắc ưu tiên Các Activity trạng thái stop paused bị giải phóng hiển thị lại Activity phải khởi động lại hoàn toàn phục hồi lại trạng thái trước 2.6.2.3 Chu kỳ sống ứng dụng - 17 - Trong ứng dụng Android có chứa nhiều thành phần thành phần có chu trình sống riêng Và ứng dụng gọi kết thúc tất thành phần ứng dụng kết thúc Activity thành phần cho phép người dùng giao tiếp với ứng dụng Tuy nhiên, tất Activity kết thúc người dùng không giao tiếp với ứng dụng nghĩa ứng dụng kết thúc Bởi Activity thành phần có khả tương tác người dùng có thành phần khả tương tác với người dùng Service, Broadcast receiver Có nghĩa thành phần không tương tác người dùng chạy background giám sát hệ điều hành người dùng tự tắt chúng 2.6.2.4 Các kiện chu kỳ sống ứng dụng Nếu Activity tạm dừng dừng hẳn, hệ thống bỏ thông tin khác từ vùng nhớ việc gọi hàm finish() nó, đơn giản giết tiến trình Khi hiển thị lần với người dùng, phải hoàn toàn restart phục hồi lại trạng thái trước Khi Activity chuyển qua chuyển lại trạng thái, phải báo việc chuyển việc gọi hàm transition Hình 2.2: Các phương thức chu kỳ Tất phương thức móc nối mà override để làm tương thich công việc ứng dụng thay đổi trạng thái Tất Activity bắt buộc phải có onCreate() để khởi tạo ứng dụng Nhiều Activity thực onPause() để xác nhận việc thay đổi liệu mặt khác chuẩn bị dừng hoạt động với người dùng 2.6.2.5 Thời gian sống ứng dụng Bảy phương thức chuyển tiếp định nghĩa chu kỳ sống Activity Thời gian sống Activity diễn lần gọi onCreate() đến trạng thái cuối gọi onDestroy() Một Activity khởi tạo toàn trạng thái toàn cục onCreate(), giải phóng tài nguyên tồn onDestroy() 2.6.2.6 Thời gian hiển thị Activity Visible lifetime activity diễn lần gọi onStart() gọi onStop() Trong suốt khoảng thời gian người dùng thấy activity hình, có nghĩa không bị foreground tương tác với người dùng Giữa phương thức người dùng trì tài nguyên để hiển thị activity đến người dùng 2.6.2.7 Các phương thức chu kỳ sống • Phương thức: onCreate() Được gọi activity lần tạo + Ở bạn làm tất cài đặt tĩnh tạo view, kết nối liệu + đến list v.v - 18 - Phương thức gửi qua đối tượngBundle chứa đựng từ trạng + thái trược Activity + Luôn theo sau onStart() • Phương thức: onRestart() Được gọi sau activity dừng, khoảng khởi + động lần (stared again) Luôn theo sau onStart() + Phương thức: onStart() Được gọi trước activity visible với người dùng + Theo sau onResume() activity đến trạng thái foreground + onStop() nế trở nên ẩn • Phương thức: onResume() Được gọi trước activity bắt đầu tương tác với người dùng + Tại thời điểm activity dỉnh stack activity + Luôn theo sau onPause() + • Phương thức: onPause() Được gọi hệ thống resuming activity khác + Phương thức điển hình việc giữ lại không đổi liệu + Nó nên diễn cách nhanh chóng activity + không resumed trở lại Theo sau onResume activity trở từ trước, + onStop trở nên visible với người dùng Trạng thái activity bị giết hệ thống + • Phương thức: onStop() Được gọi activity không thuộc tầm nhìn người dùng + Nó diễn bị hủy, activity khác + vữa resumed bao phủ Được theo sau onRestart() activity đở lại để tương tác + với người dùng, onDestroy() activity bỏ Trạng thái activity bị giết hệ thống + • Phương thức: onDestroy() Được gọi trước activity bị hủy Đó lần gọi cuối mà activity nhận + Nó gọi khác activity hoàn thành, hệ + thống tạm thởi bị hủy diệt để tiết kiệm vùng nhớ Bạn phân biệt kịch với phương isFinshing() + Trạng thái activity giết hệ thống - 19 - [...]... • Application Bên trong thẻ có các thuộc tính định nghĩa cho Android như sau: android: icon="@drawable/ic_launcher": Chỉ đường dẫn đến file icon khi cài đặt ứng dụng android: label="@string/app_name": Thuộc tính này đặt tên cho ứng dụng Tên này sẽ được... SignInActivity : Intent intent = new Intent(MainActivity.this ,Game. class); intent.putExtra (Game. KEY_DIFFICULTY,i); startActivity(intent); - 13 - Đóng một Activity : Người dùng có thể đóng một Activity bằng cách gọi phương thúc finish() Tất nhiên, cũng có thể đóng một Activity riêng biệt trước đó đã bắt đầu bằng cách gọi finishActivity() Hình 2.2: Android Emulator b Activity Stack : Bên trong hệ thống 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 Hình 2.2: Truyền dữ liệu giữa 2 Activity b Dữ liệu Intent : Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android. content.Intent... CÁC THÀNH PHẦN CHÍNH VÀ CHU KỲ CỦA MỘT ỨNG DỤNG ANDROID - 12 - 2.6.1 Các thành phần chính trong một ứng dụng của Android 2.6.1.1 Activity : Activity là một trong bốn thành phần chính và đóng vai trò quan trọng nhất của một ứng dụng Android Activity là nền tảng của một ứng dụng 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... Activity chủ yếu có 3 trạng thái chu kỳ chính như sau : o Activity hoặc running : Khi activity đượ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 o Paused : Activity được tạm dựng khi mất quyền hoạt động 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 giờ phủ hết màn hình Một activity tạm dừng là còn sống nhưng có thể bị kết