Tải bản đầy đủ (.doc) (72 trang)

Xây dựng hệ thống liên lạc điện tử giữa nhà trường và gia đình trên các thiết bị sử dụng hệ điều hành android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.04 MB, 72 trang )

LỜI CẢM ƠN
Sau một thời gian nghiên cứu và thực hiện đề tài “Xây dựng hệ thống liên
lạc điện tử giữa nhà trường và gia đình trên các thiết bị sử dụng hệ điều hành
Android” đã cơ bản hoàn thành.
Để đạt được kết quả này, em đã nỗ lực hết sức đồng thời cũng nhận được sự
giúp đỡ chỉ bảo tận tình của các thầy cô.
Trước hết em xin gửi lời cảm ơn chân thành tới Bộ môn Mạng và Truyền
Thông, Khoa Công Nghệ Thông Tin, Trường đại học Công Nghệ Thông Tin và
Truyền Thông và các thầy cô, đặc biệt là thầy giáo hướng dẫn Th.s: Đỗ Văn
Toàn đã tận tình giúp đỡ, hướng dẫn em hoàn thành đồ án tốt nghiệp.
Em cũng xin gửi lời cảm ơn tới các anh chị, các bạn trong cộng đồng
Android Việt Nam đã đóng góp ý kiến, giúp đỡ em trong quá trình thực hiện đề
tại.
Đề tài đã hoàn thành với một kết quả nhất định, tuy nhiên vẫn không thể
tránh khỏi sai sót. Kính mong sự thông cảm và đóng góp ý kiến từ các thầy cô và
các bạn.
Em xin chân thành cảm ơn!

Thái Nguyên, tháng 6 năm 2012
Sinh viên thực hiện

Triệu Anh Tú

1


LỜI CAM ĐOAN
Tôi cam đoan toàn bộ nội dung đồ án là do tôi nghiên cứu. Những kết quả,
các số liệu và chương trình trong bài báo cáo mà tôi thực hiện đồ án “Xây dựng
hệ thống liên lạc điện tử giữa nhà trường và gia đình trên các thiết bị sử dụng hệ
điều hành Android”, không sao chép bất kỳ nguồn nào khác. Tôi hoàn toàn chịu


trách nhiệm trước nhà trường về sự cam đoan này.
Thái Nguyên, tháng 6 năm 2012
Người cam đoan

Triệu Anh Tú

2


MỤC LỤC
LỜI CẢM ƠN..........................................................................................................1
LỜI CAM ĐOAN....................................................................................................2
MỤC LỤC................................................................................................................3
MỤC LỤC HÌNH ẢNH...........................................................................................5
MỤC LỤC BẢNG...................................................................................................7
LỜI NÓI ĐẦU.........................................................................................................8
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT......................................................................10
1.1. Tìm hiểu về hệ điều hành Android...........................................................10
1.1.1. Android là gì?......................................................................................10
1.1.2. Tính năng mở của hệ điều hành Android...........................................10
1.1.3. Các ứng dụng có thể tạo ra cho Android............................................10
1.1.4. Kiến trúc Android...............................................................................11
1.1.5. Ứng dụng Android..............................................................................15
1.1.6. Giao diện người dùng trong Android.................................................20
1.2. Giới thiệu các tool hỗ trợ..........................................................................25
1.2.1. Khái niệm về Web Service.................................................................25
1.2.2. Giới thiệu về mã JSON.......................................................................26
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG....................................27
2.1. Lý do chọn đề tài.......................................................................................27
2.2. Đặc tả chương trình...................................................................................27

2.2.1. Giới thiệu.............................................................................................27
2.2.2. Các chức năng chính...........................................................................28
2.3 Tìm hiểu Web Service................................................................................29
2.3.1. Đặc điểm của Web Service.................................................................29
2.3.2. Ưu điểm và nhược điểm của Web Service.........................................29
2.3.3 Kiến trúc Web Service.........................................................................31
2.3.4. Hoạt động của Web Service................................................................32
2.3.5. Các thành phần chính của Web Service.............................................34
3


2.3.6. Sơ lược về mã JSON...........................................................................40
2.4. Phân tích và thiết kế hệ thống...................................................................44
2.4.1. Mô tả bài toán......................................................................................44
2.4.2. Giá trị sử dụng.....................................................................................44
2.34.3. Đặc tả sử dụng...................................................................................44
2.4.4. Cấu trúc Use case................................................................................46
2.4.5. Biểu đồ trình tự...................................................................................50
2.5. Phân tích và thiết kế cơ sở dữ liệu............................................................52
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG.............................57
3.1. Cài đặt ứng dụng.......................................................................................57
3.2. Giao diện chính.........................................................................................59
3.3. Các chức năng chính của ứng dụng..........................................................60
3.3.1. Đăng nhập...........................................................................................60
3.3.2. Lên lịch hoạt động...............................................................................65
3.3.3. Nhận xét hoạt động.............................................................................67
3.3.4. Gửi và nhận thông báo........................................................................68
KẾT LUẬN............................................................................................................71
TÀI LIỆU THAM KHẢO.....................................................................................72


4


MỤC LỤC HÌNH ẢNH
Hình 1.1. Các thành phần chính của hệ điều hành Android..................................11
Hình 1.2. Vòng đời của một ứng dụng..................................................................15
................................................................................................................................17
Hình 1.3. Vòng đời của Activity............................................................................17
Hình 1.4. Một số phương thức của Activity..........................................................20
Hình 1.5. Biểu đồ phân cấp của View và ViewGroup..........................................21
Hình 2.1. Các thành phần của Web Service..........................................................31
Hình 2.2. Kiến trúc của Web Service....................................................................32
Hình 2.3. Hoạt động của Web Service..................................................................32
Hình 2.4. Một Client truy xuất đến nhiều Web Service cùng lúc.........................34
Hình 2.5. Một Web Service có thể triệu tập đến các Web Service khác..............34
Hình 2.6. Web service Endpoint............................................................................39
Hình 2.7. Biểu đồ Use-case...................................................................................46
Hình 2.8. Hoạt động của hệ thống.........................................................................49
Hình 2.9. Biểu đồ trạng thái chức năng đăng nhập...............................................50
Hình 2.10. Biểu đồtuần tự đăng nhập hệ thống.....................................................50
Hình 2.11. Biểu đồ tuần tự hoạt động chức năng lên lịch.....................................51
Hình 2.12. Tuần tự hoạt động chức năng nhận xét và thông báo.........................52
Hình 2.13. Mô hình cơ sơ dữ liệu..........................................................................56
Hình 3.1. File DTAN.apk dùng cài đặt ứng dụng trên thiết bị thật.....................57
Hình 3.2. Yêu cầu xác nhận cài đặt......................................................................58
Hình 3.3. Quá trình cài đặt ứng dụng....................................................................59
Hình 3.4. Màn hính chính của ứng dụng...............................................................60
Hình 3.5. Thông báo đăng nhập thành công..........................................................61
Hình 3.6. Đăng nhập thất bại.................................................................................62
Hình 3.7. Yêu cầu lựa chọn giáo viên hoặc phụ huynh........................................63

Hình 3.8. Màn hình sau khi đăng nhập của giáo viên...........................................64
Hình 3.9. Màn hình sau khi đăng nhập của phụ huynh.........................................65
5


Hình 3.10. Lên lịch hoạt động...............................................................................66
Hình 3.11. Giáo viên có thể xóa hoặc chỉnh sửa nội dung hoạt động..................67
Hình 3.12. Nhận xét hoạt động..............................................................................68
Hình 3.13. Gửi thông báo......................................................................................69
................................................................................................................................70
Hình 3.14. Nhận được thông báo...........................................................................70

6


MỤC LỤC BẢNG
Bảng 2.1. Chuẩn hóa cơ sở dữ liệu........................................................................54
Bảng 2.2. Bảng teacher_account...........................................................................55
Bảng 2.3. Bảng parent_account.............................................................................55
Bảng 2.4. Bảng class..............................................................................................55
Bảng 2.5. Bảng schedule........................................................................................56

7


LỜI NÓI ĐẦU
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990 và
theo thời gian số lượng các thuê bao cũng như các nhà cung cấp dịch vụ đi động
tại Việt Nam ngày càng tăng. Do nhu cầu trao đổi thông tin ngày càng tăng và
nhu cầu sử dụng sản phẩm công nghệ cao nhiều tính năng, cấu hình cao, chất

lượng tốt, kiểu dáng mẫu mà đẹp, phong phú nên nhà cung cấp phải luôn luôn cải
thiện, nâng cao những sản phẩm của mình. Do đó việc xây dựng các ứng dụng
cho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm năng và hứa
hẹn nhiều sự phát triển vượt bậc của ngành khoa học kĩ thuật.
Cùng với sự phát triển của thị trường điện thoại di động là sự phát triển
mạnh mẽ của xu hướng lập trình phần mềm ứng dụng cho các thiết bị di động.
Phần mềm, ứng dụng cho điện thoại di động hiện nay rất đa dạng và phong phú
trên các hệ điều hành di động cũng phát triển mạnh mẽ và đang thay đổi từng
ngày. Các hệ điều hành J2ME, Android, IOS, Hybrid, Web based Mobile
Application đã có rất phát triển trên thị trường truyền thông di động, nhưng đáng
kể nhất chính là 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, Android đã được phát triển bởi nhà phát triển công nghệ rất nổi tiếng
hiện nay là Google. 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 và được
nhiều người ưa chuộng nhất.
Mục tiêu của đề tài “Xây dựng hệ thống liên lạc điện tử giữa nhà trường và
gia đình trên các thiết bị sử dụng hệ điều hành Android” là nghiên cứu công nghệ
lập trình mới hiện nay, nghiên cứu về ngôn ngữ lập trình, môi trường làm việc,
cách hoạt động và lập trình chương trình ứng dụng cho điện thoại di động.
Để thực hiện điều đó em đã nghiên cứu về ngôn ngữ lập trình trên hệ điều
hành Android và em mong muốn sẽ xây dựng được một ứng dụng di động phục
vụ cho nhà trường và gia đình trao đổi thông tin thường xuyên của con em mình
trong quá trình học tập.
8


Những nội dung đề tài của em bao gồm 3 chương:
Chương 1: Cơ sở lý thuyết.
Chương 2: Phân tích và thiết kế hệ thống.

Chương 3: Xây dựng chương trình ứng dụng.
Do kiến thức, khả năng còn hạn chế và thời gian tìm hiểu ngắn nên trong
bài báo cáo của em còn nhiều thiếu sót, em mong nhận được sự góp ý của các
thầy cô và các bạn để đề tài của em được đầy đủ và phong phú hơn. Em xin chân
thành cảm ơn!

9


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tìm hiểu về hệ điều hành Android
1.1.1. Android là gì?
Android là một hệ thống điều hành, middleware và các ứng dụng di động
chủ chốt. Các Android Software Development Kit (SDK) bây giờ đã có.
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một
số đầu phát HD, HD player, TV) phát triển bơi Google và dựa trên nền tảng
Linux. Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự
ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của 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
và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động trong
tương lai.
1.1.2. Tính năng mở của hệ điều hành Android
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứng
dụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp. Nó được
xây dựng để được thực sự mở; ví dụ một ứng dụng có thể kêu gọi bất kỳ chức
năng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằng
cách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và
nhiều hơn nữa những kinh nghiệm cố kết cho mọi người. Androi được xây dựng
trên Linux Kernel. Hơn nữa, nó sử dụng một máy ảo tùy chỉnh được thiết kế để
tối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di động.

Android là mã nguồn mở, nó có thể được liberally mở rộng. Nền tảng này sẽ tiếp
tục tiến triển như cộng đồng nhà phát triển công việc cùng nhau để xây dựng các
ứng dụng di động sáng tạo.
1.1.3. Các ứng dụng có thể tạo ra cho Android
Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứng
dụng của bên thứ 3. Với các thiết bị xây dựng trên hệ điều hành Android, người
dùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ. Họ có thể trao
đổi trên màn hình của điện thoại, những phong cách của dialer, hoặc bất kỳ ứng
10


dụng. Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh ưa
thích của họ xem các ứng dụng để xử lý xem tất cả các hình ảnh.
1.1.4. Kiến trúc Android
Sơ đồ dưới đây cho thấy các thành phần chính của hệ điều hành Android.
Mỗi một phần được mô tả chi tiết hơn dưới đây:

Hình 1.1. Các thành phần chính của hệ điều hành Android
• Application
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:
- Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện
(phone), quản lý danh bạ (Contacts), duyệt web (Browser), nhắn tin (SMS), lịch
làm việc (Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim chụp
ảnh (camera)...
- Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), các
trò chơi (Game), từ điển...
Các chương trình có các đặc điểm là:
- Viết bằng Java, phần mở rộng là apk.

11



- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được
dựng lên để phục vụ cho nó. Nó có thể là một Active Program: Chương trình có
giao diện với người sử dụng hoặc là một background: chương trình chạy nền hay
là dịch vụ.
- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng
dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó có
tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
- Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền
hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
- Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di
động khác, Android cho phép một ứng dụng của bên thứ ba được phép chạy nền.
Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dụng quá
5~10% công suất CPU, điều đó nhằm để tránh độc quyền trong việc sử dụng
CPU.
- Ứng dụng không có điểm vào cố định, không có phương thức main để bắt
đầu.
• Application Framework
Tầng này xây dựng bộ công cụ, các phần tử ở mức cao để các lập trình viên
có thể nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử
dụng chung để tiết kiệm tài nguyên.
Giới thiệu một số thành phần của phần này:
Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng như
cung cấp công cụ điều khiển các Activity.
Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc như gọi
điện thoại.
XMPP Service: Cung cấp công cụ để liên lạc trong thời gian thực.
Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa vào

hệ thống định vị toàn cầu GPS và Google Maps.

12


Window Manager: Quản lý việc xây dựng và hiển thị các giao diện người
dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
Notication Manager: Quản lý việc hiển thị các thông báo (như báo có tin
nhắn, có e-mail mới…).
Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm
các file hình ảnh, âm thanh, layout, string (Những thành phần không được viết
bởi ngôn ngữ lập trình).
• Libraries
Android bao gồm một bộ thư viện C/C++, được sử dụng bởi các thành phần
khác nhau của hệ thống Android. Những khả năng tiếp xúc với các nhà phát triển
thông qua các khuôn khổ ứng dụng Android. Một số các thư viện lõi được liệt kê
dưới đây:
System C library: một BSD-có nguồn gốc thực hiện các hệ thống thư viện
chuẩn C (LIBC), điều chỉnh cho nhúng dựa trên Linux các thiết bị.
Media Libraries: dựa trên OpenCORE PacketVideo's, sự hỗ trợ các thư
viện phát lại và ghi âm của âm thanh và phổ biến nhiều định dạng video, cũng
như các tập tin hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG,
và PNG.
Surface Manager: Quản lý truy cập đến các hệ thống con hiển thị cũng
như các lớp đồ họa 2D, 3D từ tầng ứng dụng.
LibWebCore: Thư viện được dùng để tạo nên thành phần webview trong
Android và có thể nhúng được vào nhiều ứng dụng.
SGL: Thư viện hỗ trợ đồ hoạ 2D.
3D libraries: Thư viện đồ họa 3D.
SQLite: Một cơ sở dữ liệu nhỏ được dùng cho các thiết bị cầm tay có bộ

nhớ hạn chế. SQLite không có quan hệ như các cơ sở dữ liệu khác.
• 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ức nă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 để
13


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.
• Linux Kernel
Hệ điều hành Android được phát trển dựa trên hạt nhân linux, cụ thể là hạt
nhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi
hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp
thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với
phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình
(process).
Tầng này có các thành phần chủ yếu:
Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận
những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng...).
Camera Driver: Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về.
Bluetooth Driver: Điều khiển thiết bị phát và thu sóng Bluetooth.
USB driver: Quản lý hoạt động của các cổng giao tiếp USB.
Keypad driver: Điều khiển bàn phím.
Wifi Driver: Chịu trách nhiệm về việc thu phát sóng wifi.
Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu

dạng audio thành tín hiệu số và ngược lại.
Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng
vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền
thông được thực hiện.
M-System Driver: Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD,
flash.
Power Madagement: Giám sát việc tiêu thụ điện năng.

14


1.1.5. Ứng dụng Android
a) Vòng đời của một ứng dụng Android
Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có
độ ưu tiên (priority) thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm
đảm bảo tài nguyên.
Foreground process: Là process của ứng dụng hiện thời đang được người
dùng tương tác.
Visible process: Là process của ứng dụng mà activity đang hiển thị đối với
người dùng (onPaused() của activity được gọi).
Service process: Là Service đang running.
Background process: Là process của ứng dụng mà các activity của nó
không hiển thị với người dùng (onStoped() của activity được gọi).
Empty process: process không có bất cứ một thành phần nào active.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process,
trước tiên là các empty process.

Hình 1.2. Vòng đời của một ứng dụng
15



b) Các khái niệm trong ứng dụng Android.
Một ứng dụng Android được xây dựng nên từ nhiều thành phần
(component), để có thể tiếp cận với Android bạn cần hiểu được các component
này. Các component để xây dựng nên một ứng dụng Android được chia thành 4
component chính: Activity, Service, Content Provider, Broadcast Receiver cùng
với 2 component khác là: Intent và Notification.
Activity:
Được dùng để hiển thị một màn hình trong ứng dụng cho phép người dùng
tương tác với ứng dụng. Khi khởi động một ứng dụng Android nào đó thì bao giờ
cũng có một mainActivity được gọi, hiển thị màn hình giao diện của ứng dụng
cho phép người dùng tương tác để làm một hành động nào đó, chẳng hạn như
quay số điện thoại, chụp anh, xem một bản đồ.
Mỗi activity được cho một cửa sổ, trong đó cho vẽ giao diện người dùng
của nó. Một ứng dụng bao gồm nhiều activity, thông thường trong một ứng dụng
sẽ có những activity được quy định như các activity “chính”, tức là hiển thị cho
người dùng khi ứng dụng khởi chạy. Mỗi activity sau đó có thể gọi activity khác
để thực hiện hành động khác nhau. Mỗi một activity mới bắt đầu, các activity
trước đó được dừng lại, Android quản lý activity theo cơ chế stack.
- Các trạng thái (state) của Activity:
Active (running): Activity đang hiển thị trên màn hình (foregound).
Paused: Activity vẫn hiển thị nhưng không thể tương tác.
Stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái
stop.
Killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo
nguyên tắc ưu tiên. Các Activity ở trạng thái Stop hoặc Pause cũng có thể bị giải
phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn
toàn và phục hồi lại trạng thái trước đó.

16



- Vòng đời của Activity:

Hình 1.3. Vòng đời của Activity
Entire lifetime: từ phương thức onCreate() cho tới onDestroy().
Visible lifetime: từ phương thức onStart() cho tới onStop().
Foreground lifetime: từ phương thức onResume() cho tới onPause().
Khi xây dựng Activity cho ứng dụng cần phải viết lại (override) phương
thức onCreate() để thực hiện quá trình khởi tạo. Còn các phương thức khác có
cần viết lại hay không tùy thuộc vào yêu cầu lập trình của ứng dụng.
Service:
Service là một ứng dụng component có thể thực hiện các hoạt động longrunning trong background và không cung cấp một giao diện người dùng. Một
ứng dụng component có thể bắt đầu một service và nó sẽ tiếp tục chạy trong
background thậm chí nếu người dùng chuyển cho ứng dụng khác. Ngoài ra, một

17


dịch vụ có thể xử lý các giao dịch mạng, nghe nhạc, thực hiện các tập tin I/O,
hoặc tương tác với một provider content, tất cả từ background.
Một service cơ bản có thể có hai hình thức:
- Started: service là “started” khi một component ứng dụng (như một
activity) bắt đầu bằng cách gọi startService(). Khi bắt đầu, một service có thể
chạy trên background vô thời hạn, ngay cả khi các thành phần đó bắt đầu bị phá
hủy. Thông thường, một service bắt đầu thực hiện một hoạt động đơn lẻ và
không trả lại kết quả cho người gọi.
- Bound: service là “buond” khi một component ứng dụng liên kết cho nó
bằng cách gọi bindService(). Một service ràng buộc cung cấp một giao diện
client-server cho phép các component tương tác với các dịch vụ, gửi và các yêu

cầu, có được kết quả, và thậm chí làm như vậy qua quá trình giao tiếp
InterProcess(IPC). Một service buond chỉ chạy miễn là ứng dụng component
khác bị ràng buộc vào nó. Nhiều thành phần có thể liên kết cho dịch vu cùng một
lúc, nhưng khi tất cả chúng unbind, service này bị phá hủy.
Tìm hiểu về Activity trong Android
Activity là một thành phần ứ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ái gì đó, chẳng hạn như quay số điện thoại,
chụp ảnh, gửi email, hoặc xem một bản đồ. Mỗi activity được cho một cửa sổ,
trong đó cho vẽ giao diện người dùng của nó. Cửa sổ thường lấp đầy màn hình,
nhưng có thể nhỏ hơn so với 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 ràng buộc lỏng lẻo với
nhau. Thông thường, một trong những activity trong một ứng dụng được quy
định như các activity "chính", được trình bày cho người dùng khi tung ra ứng
dụng cho lần đầu tiên. Mỗi activity sau đó có thể bắt đầu activity khác để thực
hiện hành động khác nhau. Mỗi lần một activity mới bắt đầu, các activity trước
đó được dừng lại, nhưng hệ thống các khu bảo vệ các activity trong một ngăn xếp
(các "back stack"). Khi một activity mới bắt đầu, nó được đẩy lên phía sau ngăn
xếp và việc chú trọng của người dùng. Sự trở lại ngăn xếp tuân thủ các cơ bản
"last in, first out" cơ chế hàng đợi, do đó, khi người dùng được thực thi với các

18


activity hiện tại và nhấn phím BACK, nó là popped khỏi đống (và phá hủy) các
hồ sơ activity trước đó. (Sự trở lại ngăn xếp được thảo luận nhiều hơn trong công
việc và sắp xếp lại tài liệu).
Để tạo ra một activity, bạn phải tạo một sub class của Activity. Trong sub
class của bạn, bạn cần cho thực thi method gọi hệ thống các cuộc gọi khi chuyển
đổi activity giữa các state khác nhau cho vòng đời của nó, chẳng hạn như khi
activity đang được tạo ra, dừng lại, nối lại, hoặc bị phá hủy. Hai phương pháp gọi

lại quan trọng nhất là:
Create Activity
Bạn phải triển khai method này. Hệ thống các cuộc gọi này khi tạo activity
của bạn. Trong thời hạn triển khai thực hiện của bạn, bạn nên khởi tạo các thành
phần thiết yếu của activity của bạn. Quan trọng nhất, đây là nơi bạn phải gọi
setContentView() để xác định việc layout cho giao diện người dùng của activity.
Start Activity
Khi làm việc trong ứng dụng của riêng bạn, bạn thường sẽ cần cho đơn giản
là khởi động một activity được biết đến. Bạn có thể làm như vậy bằng cách tạo ra
một intent đó rõ ràng xác định activity bạn muốn bắt đầu, sử dụng tên lớp. Ví dụ,
đây là cách một activity bắt đầu activity khác có tên SignInActivity:
Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);
Đóng một Activity
Bạn có thể đóng một activity bằng cách gọi methos finish() của nó. Bạn
cũng có thể đóng cửa một activity riêng biệt trước đó bạn đã bắt đầu bằng cách
gọi finishActivity().Ngoài ra trong Activity còn nhiều method khác.

19


Hình 1.4. Một số phương thức của Activity
Quản lý vòng đời Activity
Quản lý vòng đời Activity của bạn bằng cách thực hiện gọi method là rất
quan trọng cho phát triển một ứng dụng mạnh mẽ và linh hoạt. Vòng đời của một
activity trực tiếp bị ảnh hưởng bởi kết hợp nhiệm vụ của nó và back stack với các
activity khác.
Một hoạt động có thể tồn tại trong ba trạng thái cơ bản: Resumed, Paused
và Stopped.
Một activity bị tạm dừng hoặc dừng lại, hệ thống có thể drop nó từ bộ nhớ

hoặc là bằng cách yêu cầu cho nó kết thúc (gọi method finish() của nó), hoặc đơn
giản là giết chết quá trình của nó. Khi hoạt động này được mở lại (sau khi được
finished hoặc chết), nó phải được tạo ra như trên.
1.1.6. Giao diện người dùng trong Android
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
20


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.
- Một View object là một cấu trúc dữ liệu có đặc tính lưu trữ các thông số
bố trí và nội dung cho một khu vực cụ thể hình chữ nhật của màn hình.
- Một View object xử lý đo lường riêng của mình, bố trí, bản vẽ thay đổi
tập trung, di chuyển, và phím/tương tác cử chỉ cho khu vực hình chữ nhật của
màn hình.
Là một object trong giao diện người dùng, view cũng là một điểm tương tác
cho người sử dụng và nhận các sự kiện tương tác.
a) Xem Hierarchy
Trên nền tảng Android, bạn xác định một hoạt động của giao diện người
dùng bằng cách sử dụng một hệ thống phân cấp của View và ViewGroup, như
trong biểu đồ dưới đây:

Hình 1.5. Biểu đồ phân cấp của View và ViewGroup


21


Cây này có thể được phân cấp đơn giản hay phức tạp như bạn cần nó được,
và bạn có thể xây dựng nó lên bằng cách sử dụng thiết lập Android của widgets
và layouts định sẵn, hoặc với Views tùy chỉnh mà bạn tạo ra cho mình.
Để đính kèm với cây phân cấp xem màn hình cho rendering, hoạt động của
bạn phải gọi setContentView() phương pháp và thông qua một tham chiếu đến
đối tượng button gốc.
Hệ thống Android nhận được tập tin này và sử dụng nó để làm mất hiệu lực,
đo lường và vẽ cây.
Nút gốc của các yêu cầu phân cấp cho nó vẽ các nút con - lần lượt, mỗi nút
view là nhóm chịu trách nhiệm kêu gọi mỗi lần view nút con riêng của mình để
vẽ có thể yêu cầu một kích thước và vị trí trong nút gốc. Nhưng đối tượng
viewgroup có quyết định cuối cùng về nơi làm thế nào, có thể được cho mỗi nút
con.
Android parses các yếu tố của cách bố trí của người thiết kế (từ phía trên
cùng của cây phân cấp), instantiating việc xem và them chúng và parent(s).
Bởi vì đây là những trích ra trong trật tự, nếu có các yếu tố đó chồng chéo
nhau các vị trí, một lần cuối để được rút ra sẽ nằm trên đầu trang của những
người khác trước đây để rút ra những không gian đó.
b) Giao diện
Cách phổ biến nhất để xác định bố trí của bạn và thể hiện sự phân cấp view
là với một tập tin XML layout. XML cung cấp một cơ cấu có thể đọc được cho
bố trí, giống như HTML. Mỗi phần tử trong XML là cả một View hoặc đối tượng
ViewGroup (hoặc hậu duệ đó). Các đối tượng View là lá trong cây, ViewGroup
đối tượng là các nhánh trong cây. Tên của một phần tử XML là tương tự với lớp
học Java mà nó đại diện. Vì vậy một yếu tố <textview> tạo ra một TextView
trong UI của bạn, và một phần tử <linearlayout> tạo ra một LinearLayout
viewgroup. Khi bạn tải một layout resource, hệ thống Android khởi chạy thời

gian các đối tượng, tương ứng với các yếu tố trong cách bố trí của bạn. Ví dụ,
một bố trí dọc đơn giản với một lần xem văn bản và một nút sẽ như thế này:

22


<? xml version = "1.0" encoding = "utf-8"?>
xmlns:android=" />android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView"/>

×