Tải bản đầy đủ (.pdf) (94 trang)

Quản lý, giám sát và điều khiển thiết bị bằng phần mềm trên Android thông qua mạng điện thoại di động

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 (3.25 MB, 94 trang )



ĐẠI HỌC QUỐC GIA HÀ
NỘI

TRƯỜNG ĐẠI HỌC CÔNG
NGHỆ







BÙI THỊ LINH




QUẢN LÝ, GIÁM SÁT VÀ ĐIỀU KHIỂN THIẾT BỊ
BẰNG PHẦN MỀM TRÊN ANDROID THÔNG QUA
MẠNG ĐIỆN THOẠI DI ĐỘNG






LUẬN VĂN THẠC










Hà Nội -
2012




ĐẠI HỌC QUỐC GIA HÀ
NỘI

TRƯỜNG ĐẠI HỌC CÔNG
NGHỆ





BÙI THỊ LINH

QUẢN LÝ, GIÁM SÁT VÀ ĐIỀU KHIỂN THIẾT BỊ
BẰNG PHẦN MỀM TRÊN ANDROID THÔNG QUA
MẠNG ĐIỆN THOẠI DI ĐỘNG



Ngành: Công nghệ Điện Tử - Viễn Thông
Chuyên ngành: Kỹ thuật Điện tử
Mã số: 60 52 70


LUẬN VĂN THẠC




NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGÔ DIÊN TẬP





Hà Nội -
2012

5
Bùi Thị Linh – K16D2
MỤC LỤC

LỜI CAM ĐOAN 3
LỜI CẢM ƠN 4
CHỮ VIẾT TẮT 7
DANH MỤC CÁC BẢNG 10
DANH MỤC CÁC HÌNH VẼ 10
MỞ ĐẦU 14
CHƢƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID 16

1.1. Giới thiệu Android 16
1.2. Tính năng Android 16
1.3. Kiến trúc Android 17
1.3.1. Ứng dụng (Applications) 17
1.3.2. Nền ứng dụng (Application Framework) 18
1.3.3. Thƣ viện (Libraries) 19
1.3.4. AndroidRuntime 20
1.3.5. Linux Kernel 21
1.4. Kiến trúcAndroid GUI 23
1.5. Ứng dụng Android 24
1.5.1. Khởi động ứng dụng 24
1.5.2. Activity Back-Stack 25
1.5.3. Nhiệm vụ Tasks 26
1.5.4. Vòng đời của Activity 26
1.5.5. Vòng đời của Process 28
1.5.6. Service 29
CHƢƠNG 2: CÁC GIAO THỨC SỬ DỤNG 30
2.1. Giao thức TCP/IP 30
2.1.1. Khái niệm 30
2.1.2. Mục đích và nguồn gốc 30
2.1.3. Đặc điểm 31
2.1.4. Cấu trúc phân tầng của TCP/IP 31
2.1.5. Đóng gói dữ liệu trong TCP/IP 32
2.1.6. Các tầng trong mô hình TCP/IP 33
2.2. Bản tin nhắn ngắn SMS 35
CHƢƠNG 3: TỔNG QUAN VỀ MẠNG THÔNG TIN DI ĐỘNG (VINAPHONE) 39
3.1. Cấu trúc, các thành phần chức năng hệ thống GSM 39
6
Bùi Thị Linh – K16D2
3.1.1. Cấu trúc hệ thống chuyển mạch 40

3.1.2. Hệ thống trạm gốc 41
3.1.3. Hệ thống hỗ trợ giám sát OSS 42
3.2. Cấu trúc, các thành phần chức năng hệ thống GPRS/EDGE 43
3.3. Cấu trúc, các thành phần chức năng hệ thống 3G 46
CHƢƠNG 4: GIẢI PHÁP 50
4.1. Mô hình giải pháp 50
4.1.1. Mô hình có sử dụng máy chủ IP tĩnh 50
4.1.2. Mô hình không sử dụng máy chủ 51
4.2. Lựa chọn mô hình giải pháp 51
4.3. Thiết kế phần mềm trên Android 52
4.3.1. Mô hình Usecase 52
4.3.2. Mô hình Package 53
4.3.3. Mô hình Class cùng mô hình hoạt động chi tiết của từng Modul 54
4.4. Thiết kế phần cứng thiết bị 90
4.4.1. Yêu cầu phần cứng 90
4.4.2. Thiết bị sử dụng trong quá trình Demo và kiểm thử 91
4.5. Thiết kế phần mềm nhúng trên thiết bị. 93
CHƢƠNG 5: KẾT QUẢ VÀ HƢỚNG PHÁT TRIỂN 95
5.1. Kết quả 95
5.2. Hƣớng phát triển 95
TÀI LIỆU THAM KHẢO 96



7
Bùi Thị Linh – K16D2
CHỮ VIẾT TẮT
Chữ viết tắt trong lĩnh vực phần mềm
STT
Từ viết tắt

Thuật ngữ tiếng Anh
Thuật ngữ tiếng Việt
1
ADT
Android Development Tools
Công cụ phát triển phần mềm
Android tích hợp cho Eclipse
2
SDK
Software Development Kits
Bộ phát triển phần mềm
3
API
Application Programming Interface.
Giao diện ứng dụng trong chƣơng
trình phần mềm.

Chữ viết tắt trong lĩnh vực viễn thông
STT
Từ viết tắt
Thuật ngữ tiếng Anh
Thuật ngữ tiếng Việt
1
3GPP
3rd Generation Partnership Project
Dự án hợp tác về di động thế hệ
thứ 3
2
3GPP2
3rd Generation Partnership Project 2

Dự án 2 hợp tác về di động thế hệ
thứ 3
3
AC
Alternating Current
Xoay chiều
4
AMPS
Advance Mobile Phone System
Hệ thống điện thoại tin di động
tiên tiến
5
ATM
Asynchronous Transfer Mode
Chế độ truyền không đồng bộ
6
AUC
Authencation Centre
Trung tâm nhận thực
7
BBU
BaseBand Unit
Khối băng cơ bản
8
BCF
Base Station Control Function
Chức năng điều khiển trạm gốc
9
BG
Border Gateway

Tổng đài cổng giữa 2 giao diện
10
BICC
Bearer Independent Call Control
Điều khiển cuộc gọi độc lập kênh
mang
11
BSC
Base Station Controller
Thiết bị điều khiển trạm gốc
12
BSS
Base Station Subsystem
Hệ thống trạm gốc
13
BTS
Base Transceiver Station
Trạm thu phát gốc
14
CBO
Compact Base Station Outdoor
Trạm gốc đơn tiêu chuẩn ngoài trời
15
CDMA
Code Division Multiple Access
Đa truy nhập phân chia theo mã
16
CDR
charging data record
Bản ghi dữ liệu tính cƣớc

17
CN
Core Network
Mạng lõi
18
CS
Coding Scheme
Mô hình mã hóa
19
D-AMPS
Digital-Advance Mobile Phone
System
AMPS số
20
DBS
Distributed Base Station
Trạm gốc phân bố
21
DC
Discrete Current
Một chiều
8
Bùi Thị Linh – K16D2
22
DSSS
Direct Sequence Spectrum Spread
Trải phổ chuỗi trực tiếp
23
EDGE
Enhanced Data rates for GSM

Evolution
Mạng dữ liệu mở rộng cho hệ
thống GSM
24
EIR
Equipment Identification Register
Bộ ghi nhận dạng thiết bị
25
EMC
Electro-Magnetic Compatibility
Tƣơng thích điện từ trƣờng
26
ETSI
European Telecommunications
Standards Institute
Viện tiêu chuẩn viễn thông châu
Âu
27
FDMA
Frequency Division Multiple Access
Đa truy nhập phân chia theo tần số
28
GGSN
Gateway GPRS Support Node
Nút hỗ trợ GPRS cổng
29
GMSK
Gaussian minimum-shift keying
Khóa dịch pha tối thiểu Gauss
30

GPRS
General Packet Radio Service
Dịch vụ vô tuyến gói chung
31
GSM
Global System for Mobile
Communications
Hệ thống toàn cầu cho thông tin di
động
32
HDR
High Data Rate
Tốc độ số liệu cao
33
HLR
Home Location Register
Bộ ghi định vị thƣởng trú
34
HSDPA
High-Speed Downlink Packet Access
Truy nhập gói đƣờng lên tốc độ
cao
35
HSL
High Speed Link
Đƣờng truyền dẫn báo hiệu tốc độ
cao
36
HSPA
High-Speed Packet Access

Truy nhập gói tốc độ cao
37
HSS
Home subscriber server
Máy chủ quản lý thuê bao thƣờng
trú
38
IDU
Indoor Unit
Khối lắp đặt trong nhà
39
IETF
Internet Engineering Task Force
Ủy ban kỹ thuật Internet
40
IMEI
International Mobile Equipment
Identity
Nhận dạng thiết bị di động quốc tế
41
IN
Intelligent Network
Mạng thông minh
42
ITU
International Telecommunication
Union
Liên minh viễn thông quốc tế
43
LNA

Low Noise Amplifier
Khuyếch đại tạp âm thấp
44
LTE
Long Term Evolution
Mạng phát triển lâu dài trong
tƣơng lai
45
MAC
Medium Access Control
Điều khiển truy nhập phƣơng tiện
46
MBI
Multi-Standard Base Station Indoor
Trạm gốc đa tiêu chuẩn trong nhà
47
MBO
Multi-Standard Base Station Outdoor
Trạm gốc đa tiêu chuẩn ngoài trời
48
MCB
Main Circuit Breaker
Bộ ngắt mạch tự động
9
Bùi Thị Linh – K16D2
49
MCCDMA
Multi Carrier - CDMA
CDMA đa sóng mang
50

MCS
Modulation and coding scheme
Mô hình mã hóa và điều chế
51
ME
Mobile Equipment
Thiết bị di động
52
MGW
Media Gateway
Cổng các phƣơng tiện
53
MIMO
Muliple Input Multiple Output
Công nghệ sử dụng nhiều đầu vào
nhiều đầu ra
54
MMS
Multimedia Messaging Service
Dịch vụ nhắn tin đa phƣơng tiện
55
MS
Mobile Station
Thiết bị di động
56
MSC
Mobile Switching Center
Trung tâm chuyển mạch di động
57
MSS

Mobile SoftSwitch Solution
Giải pháp chuyển mạch mềm di
động
58
N-AMPS
Narrowband-Advance Mobile Phone
System
AMPS băng hẹp
59
ODU
Outdoor Unit
Khối lắp đặt ngoài trời
60
OFDMA
Orthogonal Frequency Division
Multiple Access
Đa truy nhập phân chia theo tần số
trực giao
61
OMC
Operation and Maintenance Center
Trung tâm vận hành và bảo dƣỡng
62
OMC - R
OMC Radio
OMC vô tuyến
63
OMC - S
OMC Switching
OMC chuyển mạch

64
OML
Operation and Maintenance Link
Đƣờng tín hiệu vận hành và bảo
dƣỡng
65
OSS
Operation Support System
Hệ thống hỗ trợ hoạt động
66
PCM
Pulse-code modulation
Điều chế xung mã
67
PCU
Packet Control Unit
Khối điều khiển gói
68
PDC
Personal Digital Cellular
Mạng di động số cá nhân
69
PDC
Personal Digital Cellular
Hệ thống di động số cá nhân
70
PE
Protective Earth
Dây đất bảo vệ
71

PLMN
Public Land Mobile Network
Mạng di động mặt đất công cộng
72
PPS
PrePaid Service
Dịch vụ trả trƣớc
73
PSTN
Public Switched Telephone Network
Mạng điện thoại chuyển mạch
kênh
74
QAM
Quadrature amplitude modulation
Điều chế biên độ cầu phƣơng
75
QPSK
Quadrature Phase Shift Keying
Điều chế dịch pha cầu phƣơng
76
RLC
Radio Link Control
Điều khiển kết nối vô tuyến
77
RNC
Radio Network Controller
Bộ điều khiển mạng vô tuyến
78
RPP

Regional Processor Platform
Nền tảng xử lý vùng
79
RRU
Remote Radio Unit
Khối vô tuyến từ xa
10
Bùi Thị Linh – K16D2
80
RTP
Real Time Transport Protocol
Giao thức truyền tải thời gian thực
81
SCP
Service Control Point
Nút điều khiển dịch vụ
82
SDP
Service Data Point
Nút dữ liệu dịch vụ
83
SGSN
Serving GPRS Support Node
Nút hỗ trợ GPRS phục vụ
84
SMS
Short Message Service
Dịch vụ bản tin ngắn
85
SMSC

Short Message Service Center
Trung tâm dịch vụ bản tin ngắn
86
SS
Switching System
Hệ thống chuyển mạch
87
STM (1)
Synchronous Transport Module
Khối truyền tải đồng bộ
88
STP
Signaling Transfer Point
Điểm chuyển đổi báo hiệu
89
TACS
Total Access Communication System
Hệ thống thông tin truy nhập toàn
bộ
90
TCH
Traffic Channel
Kênh lƣu lƣợng
91
TCP/IP
Transmission Control
Protocol/Internet Protocol
Giao thức điều khiển truyền/Giao
thức liên mạng
92

TDM
Time Division Multiplexing
Ghép kênh phần chia thời gian
93
TDMA
Time Division Multiple Access
Đa truy nhập phân chia theo thời
gian
94
TRAU
Transcoder and Rate Adaptation Unit
Khối chuyển đổi mã và thích ứng
tốc độ
95
TRX
Transceiver
Bộ thu phát
96
TSC
Transit Switching Center
Trung tâm chuyển mạch chuyển
tiếp
97
TSS
Telephony Softswitch Solution
Giải pháp chuyển mạch mềm điện
thoại
98
UE
User Equipment

Thiết bị ngƣời dùng
99
UMB
Ultra Mobile Broadband
Mạng băng rộng di động
100
UMTS
Universal Mobile
Telecommunications System
Hệ thống viễn thông di động toàn
cầu
101
USIM
UMTS Subscriber Identity Module
Mô-dun nhận dạng thuê bao
UMTS
102
UTRAN
UMTS Terrestrial Radio
AccessNetwork
Mạng truy nhập vô tuyến UMTS
mặt đất
103
VLR
Visitor Location Register
Bộ ghi định vị tạm trú
104
VMS
Voice Messaging Service
Dịch vụ nhắn tin thoại

105
VSWR
Voltage Standing Wave Ratio
Tỷ số sóng đứng điện áp
106
WAP
Wireless Application Protocol
Giao thức ứng dụng vô tuyến
107
WCDMA
Wideband Code Division Multiple
Access
Đa truy nhập theo mã băng rộng
108
WiMAX
Worldwide Interoperability for
Microwave Access
Mạng liên kêt toàn cầu với truy
nhập siêu cao tần

11
Bùi Thị Linh – K16D2
DANH MỤC CÁC BẢNG
Bảng 2-1: Bảng giao thức trên các tầng của TCP/IP. 33

DANH MỤC CÁC HÌNH VẼ
Hình 1-1: Kiến trúc Android 18
Hình 1-2: Quản lý Surface 20
Hình 1-3: Quản lý Audio 20
Hình 1-4: Khởi tạo Platform 21

Hình 1-5: Quá trình IPC 22
Hình 1-6: Quản lý năng lƣợng 23
Hình 1-7: Kiến trúc Android GUI 23
Hình 1-8: Activity back stack 25
Hình 1-9: Background và Foreground Task 26
Hình 1-10: Vòng đời của Activity 27
Hình 1-11: Lƣu trạng thái Activity 28
Hình 2-1: Giao thức TCP/IP 32
Hình 2-2: Cấu trúc gói Dữ liệu. 32
Hình 2-3: Mô Hình TCP/IP. 33
Hình 2-4: Quan hệ giữa MS và SC 36
Hình 2-5: Quá trình gửi tin MO trong mạng GSM 36
Hình 2-6: Quá trình gửi tin MT trong mạng GSM 37
Hình 2-7: Vòng đời của tin nhắn 38
Hình 3-1: Cấu trúc hệ thống thông tin di động trong hệ thống GSM 39
Hình 3-2: Cấu trúc ghép nối TRAU tại BTS, BSC, MSC 42
Hình 3-3: Sơ đồ kết nói các thành phần mạng lõi GSM/GPRS/EDGE của Vinaphone 43
Hình 3-4: Sơ đồ các khối chức năng hệ thống GPRS/EDGE kết hợp với GSM 44
Hình 3-5: Sơ đồ kết nối mạng lõi 3G theo 3GPP Release 4 46
Hình 3-6: Sơ đồ kết nối mạng lõi Vinaphone khi triển khai 3G 49
Hình 4-1: Mô hình điều khiển có sử dụng Server 50
Hình 4-2: Mô hình điều khiển không sử dụng Server 51
12
Bùi Thị Linh – K16D2
Hình 4-3: Mô hình Usecase của phần mềm điều khiển 52
Hình 4-4: Mô hình Package của phần mềm điều khiển 53
Hình 4-5: Biểu đồ Main class và giao diện 54
Hình 4-6: Biểu đồ hoạt động hàm onCreate() trong Class MainActivity 55
Hình 4-7: Biểu đồ ServiceManager class 55
Hình 4-8: Biểu đồ hoạt động hàm onCreate() trong ServcieManage class 56

Hình 4-9: Intent xử lý sự kiện nhận SMS trong ServiceManager class 56
Hình 4-10: Biểu đồ hoạt động hàm processMessage() trong ServiceManage class 57
Hình 4-11: Biểu đồ hoạt động hàm checkPhoneExist() của ServiceManager class 57
Hình 4-12: Biểu đồ hoạt động hàm storeSMSContent của ServiceManager class 58
Hình 4-13: Biểu đồ hoạt động hàm getPhoneOrDescription() 58
Hình 4-14: Biểu đồ SMSReceiver class 59
Hình 4-15: Biểu đồ hoạt động hàm oReceive() của SMSReceiver class 59
Hình 4-16: Biểu đồ class của DeviceManager 60
Hình 4-17: Giao diện quản lý và thêm thiết bị 61
Hình 4-18: Màn hình ContextMenu và cập nhật mô tả thiết bị 61
Hình 4-19: Biểu đồ hoạt động hàm onCreate() của DeviceTabActivity class 62
Hình 4-20: Biểu đồ hoạt động hàm onCreate() của AddDeviceActivity class 62
Hình 4-21: Biểu đồ hoạt động hàm onCreateDialog của AddDeviceActivity class 63
Hình 4-22: Biểu đồ hoạt động hàm loadPhoneInfoList() của AddDevieActivity class 63
Hình 4-23: Biểu đồ hoạt động hàm addPhoneNumber() của AddDeviceActivity class64
Hình 4-24: Biểu đồ hoạt động hàm removePhoneNumber 64
Hình 4-25: Biểu đồ hoạt động hàm updatePhoneDescription() 65
Hình 4-26: Biểu đồ hoạt động hàm clearPhoneList() của AddDeviceActivity class 65
Hình 4-27: Biểu đồ hoạt động hàm importPhoneList() của AddDeviceActivity class . 66
Hình 4-28: Biểu đồ hoạt động hàm getPhoneOrDescription 66
Hình 4-29: Biểu đồ hoạt động hàm clearPhoneData() của AddDeviceActivity class 67
Hình 4-30: Biểu đồ hoạt động hàm isMyServiceRunning() 67
Hình 4-31: Hàm onCreateContextMenu() của AddDeviceActivity class 68
Hình 4-32: Biểu đồ hoạt động hàm onContextItemSelected() 68
13
Bùi Thị Linh – K16D2
Hình 4-33: Biểu đồ hoạt động hàm onCreateOptionMenu() 69
Hình 4-34: Biểu đồ hoạt động hàm onPrepareOptionsMenu() 69
Hình 4-35: Biểu đồ hoạt động hàm onOptionsItemSelected() 70
Hình 4-36: Biểu đồ hoạt động hàm isExistPhone() của AddDeviceActivity class 70

Hình 4-37: Biểu đồ hoạt động hàm inputPhoneInfo() của AddDeviceActivity class 71
Hình 4-38: Biểu đồ class của DeviceCommand 72
Hình 4-39: Giao diện của DeviceCommand và thêm một Command 72
Hình 4-40: Giao diện ContextMenu, cập nhật và xác nhận truyền một Command 73
Hình 4-41: Biểu đồ hoạt động hàm onCreate của DeviceCommandActivity class 73
Hình 4-42: Biểu đồ hoạt động hàmloadCommandInfoList() 74
Hình 4-43: Biểu đồ hoạt động hàm addCommandName() 74
Hình 4-44: Biểu đồ hoạt động hàm removeCommandName() 75
Hình 4-45: Biểu đồ hoạt động hàm updateCommandContent 75
Hình 4-46: Biểu đồ hoạt động hàm clearCommandList() 76
Hình 4-47: Biểu đồ hoạt động hàm onCreateContextMenu() 76
Hình 4-48: Biểu đồ hoạt động hàm onContextItemSelected() 77
Hình 4-49: Biểu đồ hoạt động hàm getCommandOrContent 77
Hình 4-50: Biểu đồ hoạt động hàm isExistCommand() 78
Hình 4-51: Biểu đồ hoạt động hàm inputCommand() 78
Hình 4-52: Biểu đồ hoạt động hàm onCreateDialog() 79
Hình 4-53: Biểu đồ hoạt động hàm sendCommandControl 79
Hình 4-54: Biểu đồ hoạt động hàm sendSMS() của DeviceCommandActivity class 80
Hình 4-55: Biểu đồ class của DeviceContent 80
Hình 4-56: Giao diện quản lý nội dung các message của thiết bị (khi chƣa có dữ liệu)81
Hình 4-57: Biểu đồ hoạt động hàm getListValues() của DeviceContentActivity class 81
Hình 4-58: Biểu đồ hoạt động hàm onCreate() của DeviceContentActivity class 82
Hình 4-59: Biểu đồ hoạt động hàm loadSMSContentList() 82
Hình 4-60: Biểu đồ hoạt động hàm updateData() của DeviceContentActivity class 83
Hình 4-61: Biểu đồ hoạt động hàm loadSMSDateList() 84
Hình 4-62: Biểu đồ class của DeviceReportActivity 84
14
Bùi Thị Linh – K16D2
Hình 4-63: Giao diện báo cáo và các dạng biểu đồ thống kê 85
Hình 4-64: Thêm các dạng biểu đồ thống kê 85

Hình 4-65: Biểu đồ hoạt động hàm onCreate() của DeviceReportActivity class 86
Hình 4-66: Biểu đồ hoạt động hàm getListValue() của DeviceReportActivity class 86
Hình 4-67: Biểu đồ Connection class 87
Hình 4-68: Biểu đồ hoạt động hàm khởi tạo của Connection class 87
Hình 4-69: Biểu đồ hoạt động hàm open() của Connection 88
Hình 4-70: Biểu đồ hoạt động hàm sendCloseSignal() của Connection class 88
Hình 4-71: Biểu đồ hoạt động hàm close() của Connection class 89
Hình 4-72: Biểu đồ hoạt động hàm write() của Connection class 89
Hình 4-73: Biểu đồ mô hình hóa thiết bị điều khiển tiêu chuẩn 90
Hình 4-74: Khối nguồn 91
Hình 4-75: Khối vi điều khiển trung tâm 92
Hình 4-76: Khối hiển thị 92
Hình 4-77: Khối nhập liệu 92
Hình 4-78: Khối giao tiếp 93
Hình 4-79: Biểu đồ tuần tự quá trình giao tiếp giữa thiết bị với phần mềm trên Android94



15
Bùi Thị Linh – K16D2
MỞ ĐẦU
Trong những năm gần đây, cùng với sự phong phú về chủng loại, cấu hình và giá
thành, điện thoại Android đã trở nên phổ biến và xâm nhập ngày càng sâu rộng tới
ngƣời sử dụng trên toàn thế giới. Có lẽ lý do giúp cho “dế” Android phát triển nhanh
chính là có một hệ điều hành đƣợc ngƣời dùng ƣa chuộng nhất. Sở dĩ hệ điều hành
Android thu hút đƣợc sự chú ý đó vì chúng đƣợc tạo nên từ nền tảng nguồn mở, cho
phép ngƣời dùng có thể tùy biến nhiều trên đó. Mặt khác, với Android thiết bị ngƣời
dùng không đòi hỏi phải có một cầu hình tối thiểu nào cả. Chúng có thể hoạt động trên
mọi cấu hình, máy có hỗ trợ cảm ứng hay không, cũng nhƣ tƣơng thích với mọi nhà
sản xuất thiết bị phần cứng [9].

Bên cạnh đó, các thiết bị trong công nghiệp, dân sự cũng nhƣ quốc phòng ngày
càng đa dạng, hiện đại, với sự trải rộng của không gian vận hành, cho nên việc quản
lý, giám sát và điều khiển chúng thông minh, linh hoạt là yêu cầu thiết yếu.
Thêm nữa, nền tảng di động trong xã hội hiện tại đã đạt tới mức phổ biết cũng
nhƣ những tiện ích, dịch vụ mà nó mang lại là vô cùng phong phú, đây chính là cơ sở
thuận lợi hƣớng tới một xã hội kết nối, khả năng đƣa con ngƣời có thể kiểm soát các
thiết bị, dịch vụ mình làm ra trong quy mô rộng lớn. Năng suất lao động cũng từ đó mà
có những bƣớc nhảy vọt.
Đó cũng là lý do tôi chọn đề tài: “Quản lý, giám sát và điều khiển thiết bị bằng
phần mềm trên Android qua mạng điện thoại di động”.
Đề tài đƣợc trình bày thành5 chƣơng:
Chƣơng 1: Tổng quan về hệ điều hành Android.
Chƣơng 2: Các giao thức sử dụng.
Chƣơng 3: Tổng quan về mạng thông tin di động (Vinaphone).
Chƣơng 4: Giải pháp.
Chƣơng 5: Kết quả và Hƣớng phát triển.


16
Bùi Thị Linh – K16D2
CHƢƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID
Hệ điều hành Android đã đƣợc mô tả chi tiết trong các tài liệu tham khảo [5-7],
tuy nhiên, để có cái nhìn tổng quan về vấn đề này, dƣới đây là những trình bày tóm tắt.
1.1. Giới thiệu Android
Android làhệ điều hành dành cho điện thoại di động,đƣợc xây dựng dựa trên nền
Linux. Trƣớc đây hệ điều hành này thuộc sở hữu của Android Inc, Google đã mua lại
hệ điều hành này tại thời điểm phát triển ban đầu (năm 2005) và tiếp tục phát triển nó
nhƣ một phần của chiến lƣợc để bƣớc vào không gian di động.
Google Android là hệ điều hành mở, hoàn thiện và miễn phí đầu tiên. Sự ra đời
của nó 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 đính tạo nên một chuẩn mở
cho điện thoại di động trong tƣơng lai. Các nhà cung cấp (thƣờng là các nhà sản xuất
phần cứng) có thể thêm phần mở rộng cho Android và tùy biến Android để phân biệt
sản phẩm của họ với những ngƣời khác. Mô hình này phát triển đơn giản làm cho
Android rất hấp dẫn và do đó đã khơi dậy sự quan tâm của nhiều nhà cung cấp.
1.2. Tính năng Android
Androidlà mã nguồn mở và miễn phí cho các nhà sản xuất tuỳ biến, có nghĩa là
không có phần cứng cố định và cấu hình phần mềm. Tuy nhiên, Android tự bản thân
nó đã hỗ trợ các tính năng sau đây:
 Lƣu trữ - Sử dụng SQLite, một cơ sở dữ liệu quan hệ, trọng lƣợng nhẹ cho dữ
liệu lƣu trữ.
 Kết nối - Hỗ trợ GSM / EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth (bao
gồm A2DP và AVRCP), WiFi, LTE và WiMAX.
 Tin nhắn - Hỗ trợ cả SMS và MMS.
 Trình duyệt web - Dựa trên WebKit mã nguồn mở, cùng với V8 JavaScript của
Chrome.
 Truyền thông hỗ trợ - Bao gồm hỗ trợ cho các phƣơng tiện truyền thông sau
đây: H.263, H.264 (trong 3GP hoặc MP4 container), MPEG-4 SP, AMR,
AMR-WB, AAC, HE-AAC, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG,
GIF và BMP.
 Hỗ trợ phần cứng - Accelerometer cảm biến, máy ảnh, kỹ thuật số Compass,
Cảm biến tiệm cận và GPS.
 Multi-touch - Hỗ trợ màn hình cảm ứng đa điểm.
 Đa chức năng - Hỗ trợ các ứng dụng đa tác vụ.
 Hỗ trợ Flash - Android 2.3 hỗ trợ Flash 10.1.
 Tethering - Hỗ trợ chia sẻ kết nối Internet là một điểm nóng không dây/có dây.

17
Bùi Thị Linh – K16D2
Tất cả các ứng dụng có sẵn đều đƣợc viết bằng ngôn ngữ Java và sử dụng

Android SDK (Software Development Kit).
Bộ SDK của Android bao gồm mọi thứ cần thiết giúp bạn có thể lập trình, debug
và test ứng dụng Android.
 Android API Cốt lõi của bộ SDK là thƣ viện các API và Google cũng chỉ sử
dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android (native
application).
 Development Tool SDK bao gồm rất nhiều công cụ giúp biên dịch, sửa lỗi và
hỗ trợ trong việc lập trình ứng dụng.
 Android Emulator Trình giả lập một thiết bị chạy Android thực sự với nhiều
skin thay thế, cực kì tiện lợi cho việc test ứng dụng Android ngay trên máy
tính mà không cần phải thông qua một thiết bị chạy Android thực.
 Tài liệu SDK bao gồm bộ tài liệu rất chi tiết, giải thích cặn kẽ, chính xác những
gì bao gồm trong mỗi package, class cùng với cách sử dụng chúng. Ngoài tài
liệu về “code”, còn có những tài liệu dùng để “getting started” và giải thích
các nguyên tắc về cơ chế hoạt động của ứng dụng trong Android.
 Code mẫu SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho các tính
năng nổi bật trên Android, cũng nhƣ các ứng dụng demo cách sử dụng những
tính năng của bộ API.
Đối với Eclipse IDE (Integrated Development Environment), Google cung cấp
một plug-in giúp kết hợp chặt chẽ giữa Eclipse với Android Emulator cũng nhƣ công
cụ debug. Điều này giúp cho việc phát triển ứng dụng cho Android bằng Eclipse thực
sự trở nên đơn giản.
1.3. Kiến trúc Android
Các lớp khác nhau tạo nên hệ điều hành Android đƣợc miêu tả ở hình 1-1.
1.3.1. Ứng dụng (Applications)
Các ứng dụng Android đƣợc viết bằng ngôn ngữ lập trình Java và chạy bên trong
một máy ảo (VM). Điều quan trọng cần lƣu ý rằng máy ảo không phải là một JVM
nhƣ chúng ta có thể mong đợi, nhƣng là Dalvik Virtual Machine, 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 các máy ảo Dalvik, là
nơi cƣ trú của một quá trình quản lý Linux kernel. Một số ứng dụng cơ bản bao gồm

lịch, ứng dụng email, chƣơng trình tin nhắn SMS, bản đồ, thực hiện cuộc gọi điện
thoại, truy cập trình duyệt Web, truy cập danh bạ điện thoại.

18
Bùi Thị Linh – K16D2

Hình 1-1: Kiến trúc Android
1.3.2. Nền ứng dụng (Application Framework)
Đây là lõi hay là nền tảng mà tất cả những nhà phát triển Android đều phải theo.
Các nhà phát triển có thể truy cập vào tất cả các framework API cơ bản của các chức
năng của một điện thoại nhƣ quản lý phân bổ tài nguyên, chuyển đổi giữa các quy
trình hoặc các chƣơng trình, các ứng dụng điện thoại và theo dõi lƣu giữ vị trí của điện
thoại. Về cơ bản tất cả các ứng dụng đều là một tập hợp các dịch vụ và các hệ thống,
bao gồm:
 Quản lý Activity.
 Quản lý cửa sổ (màn hình).
 Cung cấp nội dung.
 Hệ thống View.
 Quản lý gói tin.
 Quản lý điện thoại.
 Quản lý nguồn tài nguyên.
 Quản lý vị trí.
 Quản lý thông báo.
Trong đó:
 Một tập phong phú và đa dạng Views có thể đƣợc sử dụng để xây dựng một
ứng dụng, bao gồm lists, grids, text boxes, buttons và thậm chí một trình
duyệt web nhúng.
19
Bùi Thị Linh – K16D2
 Cung cấp nội dung cho phép các ứng dụng truy cập dữ liệu từ các ứng dụng

khác (nhƣ Contacts) hoặc để chia sẻ dữ liệu riêng của chúng.
 Quản lý nguồn tài nguyên, cung cấp quyền truy cập vào tài nguyên phi mã
nguồn nhƣ chuỗi, đồ họa và các lớp tập tin.
 Quản lý thông báo cho phép tất cả các ứng dụng để hiển thị thông báo tùy chỉnh
trong thanh trạng thái.
 Quản lý Activity, quản lý vòng đời của ứng dụng và cung cấp một stack (ngăn
xếp), back-stack.
Kiến trúc đƣợc thiết kế để đơn giản hóa việc tái sử dụng của các thành phần.
Hiểu cách khác framework ứng dụng nhƣ là một tập các công cụ cơ bản mà một nhà
phát triển có thể xây dựng các công cụ phức tạp hơn nhiều.
1.3.3. Thƣ viện (Libraries)
Lớp này bao gồm thƣ viện của Android đƣợc viết bằng C, C++ và đƣợc sử dụng
bởi các thành phần khác nhau của hệ thống Android. Các nhà phán triển truy cập
những tính năng cung cấp bởi các thƣ viện thông qua Framework ứng dụng Android.
Một số các thƣ viện này bao gồm các phƣơng thức truyền thông (media), đồ họa, 3D,
SQLite, thƣ viện trình duyệt web…
 Hệ thống thƣ viện C (Android Libc implementation): Kế thừa các hệ thống
thƣ viện chuẩn C (LIBC), tối ƣu hóa để sử dụng trong các thiết bị nhúng trên
nền Linux
 Theo giấy phép BSD.
 Kích thƣớc nhỏ và dẫn xuất mã nhanh.
 Tùy chỉnh nhanh thực hiện pthread.
 Đƣợc xây dựng - trong hỗ trợ cho Android-dịch vụ cụ thể (thuộc tính hệ
thống, khả năng đăng nhập).
 Không hỗ trợ một số tính năng POSIX.
 Lƣu trữ, dựng hình, đa phƣơng tiện (Media Library): Cung cấp các tính
năng chính trên nền tảng Android:
 SQLite, một hệ thống quản lý cơ sở dữ liệu quan hệ đơn giản (không
IPC, tập tin đơn giản).
 WebKit, một framwork ứng dụng cung cấp nền tảng cho việc xây dựng

một trình duyệt web.
 Media Framework, dựa trên nền tảng PacketVideo openCORE (codec).
 Tối ƣu hóa thƣ viện đồ họa 2D / 3D dựa trên OpenGL ES.
 Quản lý giao diện (Surface Manager): Cung cấp một hệ thống rộng các
surface để có thể tạo ra tất cả các surface trong một bộ khung đệm:
 Kết hợp surface 2D và 3D.
20
Bùi Thị Linh – K16D2
 Có thể sử dụng OpenGL ES và bộ tăng tốc phần cứng 2D cho các thành
phần của nó.

Hình 1-2: Quản lý Surface
 Quản lý âm thanh (Audio Manager): Quá trình nhiều dòng âm thanh trong
đƣờng âm ra PCM.
 Xử lý các loại khác nhau của các thiết bị (tai nghe, loa ngoài…).
 Chuyển hƣớng dòng âm với đầu ra quy định.

Hình 1-3: Quản lý Audio
 Thƣ viện trừu tƣợng phần cứng (Hardware Abstraction Libraries): Chỉ rõ
giao diện phần cứng mà Androidđòi hỏi để vận hành.
 Đặt tiêu chuẩn hóa APIs các nhà phát triển sẽ phải thực hiện.
 Có sẵn cho tất cả các thành phần một nhà sản xuất có thể tích hợp trên
nền tảng Android của nó.
1.3.4. AndroidRuntime
Lớp này bao gồm các thiết lập của các thƣ viện cơ sở đƣợc yêu cầu cho các thƣ
viện java. Mỗi ứng dụng Android đƣợc ví nhƣ của riêng máy ảo Dalvik. Dalvik đã
đƣợc viết để một thiết bị có thể chạy nhiều máy ảo hiệu quả và thực hiện các tập tin
thực thi (. Dex) tối ƣu hóa cho bộ nhớ tối thiểu.
Dalvik máy ảo: Một máy ảo chỉ thông dịch (không có JIT), thiết lập cơ bản.
 Tối ƣu hóa cho các yêu cầu bộ nhớ thấp.

 Đƣợc thiết kế để cho phép nhiều máy ảo để chạy một lúc.
 Dựa vào hệ điều hành cơ bản cho quá trình cách ly, quản lý bộ nhớ và hỗ trợ
luồng.
21
Bùi Thị Linh – K16D2
 Thực hiện chƣơng trình chạy Dalvik (DEX) các tập tin đƣợc nén vào một gói
Android (APK).
1.3.5. Linux Kernel
Lớp này bao gồm các chƣơng trình quản lý bộ nhớ của Android, thiết lập bảo
mật, phần mềm quản lý điện năng và một số trình điều khiển cho phần cứng, truy cập
tập tin hệ thống, mạng và các quá trình giao tiếp. Kernel cũng hoạt động nhƣ một lớp
trừu tƣợng giữa phần cứng và phần còn lại của stack phần mềm.
Linux 2.6.24phù hợp cho Android:
 Một số tính năng phổ biến đã đƣợc loại bỏ:
 Không có hỗ trợ GBLIC.
 Không có hệ thống cửa sổ gốc.
 Không bao gồm các thiết lập đầy đủ các tiện ích Linux.
 Android, thành phần cụ thể đã đƣợc thêm vào:
 Báo thức, chia sẻ bộ nhớ Android.
 Kernel Memory Killer, Kernel Debugger, Logger.
Khởi tạo Platform

Hình 1-4: Khởi tạo Platform
22
Bùi Thị Linh – K16D2
(A) Bootloader tải các phần cơ bản (Kernel) và bắt đầu quá trình "Init".
(B) "Daemons" xử lý các giao diện phần cứng mức thấp bắt đầu hoạt động (USB,
ADB, trình gỡ lỗi, phát thanh). Sau đó, "Zygote", khởi tạo quá trình thiết lập máy ảo
Dalvik và "Runtime" khởi tạo quá trình "Quản lý dịch vụ", một yếu tố quan trọng cho
"Binders" và IPC (Inter Process Communication).

(C) "Runtime": xử lý yêu cầu "Zygote" để bắt đầu một thể hiện mới của Dalvik
chạy "System Server".
(D) Hai quá trình đầu tiên có khả năng xử lý đồ họa và âm thanh đầu ra.
(E) Tất cả các thành phần khác của Android sau đó đƣợc khởi động.
(nhƣ hình 1-4)
Quá trình giao tiếp trong (Inter Process Communication IPC):
Process BProcess A
App A Context Binder Driver Service B
get Service
call foo (object)
Marshal proxy object
Service
call return
replay to IPC threads

Hình 1-5: Quá trình IPC
Trong Android, ứng dụng và dịch vụ đƣợc tách biệt rõ ràng, do đó nó yêu cầu
một IPC thực sự nhỏ gọn. Cơ chế IPC trong Android đƣợc gọi là Binder và đƣợc dựa
trên bộ nhớ chia sẻ. Nhƣ ở trên đã đề cập, khi một quá trình bắt đầu, nó đăng ký bản
thân nó với “Quản lý dịch vụ”. Điều này xảy ra bên trong và về đăng ký, mỗi một quá
trình nhận đƣợc đối tƣợng Context - một tham chiếu tới “Quản lý dịch vụ”. Bây giờ,
khi ứng dụng A cần giao tiếp với dịch vụ B và hai quá trình này chạy trong hai quá
trình riêng biệt. Để làm đƣợc điều này, ứng dụng A yêu cầu Context cho dịch vụ B
bằng cách gửi tên các dịch vụ. Context trả về tham chiếu từ dịch vụ tới A, trên A có
thể gọi một phƣơng thức - gọi là foo. Gọi phƣơng thức này bị chặn bởi trình điều khiển
Binder. Trình điều khiển sắp xếp các đối tƣợng và cho qua các tham chiếu của nó tới
chỗ nhận B. Chú ý rằng ở đây cho qua tham chiếu chứ không phải giá trị, trong đó đối
23
Bùi Thị Linh – K16D2
tƣợng đƣợc sắp xếp. Về phía dịch vụ B, Binder duy trì một chủ đề chung (rõ ràng với

dịch vụ). Một trong các chủ đề trong nhóm chung là nhận cuộc gọi đến, xác định đƣợc
đối tƣợng thực tế trong dịch vụ B và thực hiện cuộc gọi. Giá trị trả về đƣợc gửi lại cho
ngƣời nhận tƣơng tự nhƣ vậy:
Quản lý năng lƣợng:
Căn cứ vào quản lý nguồn điện tiêu chuẩn của Linux, Androidvẫn có thành
phần riêng của mình.
 Ứng dụng sử dụng thƣ viện không gian ngƣời sử dụng để thông báo khuôn khổ
về hạn chế của nó.
 Hạn chế đƣợc thực hiện bằng cách sử dụng cơ chế khóa.

Hình 1-6: Quản lý năng lượng
1.4. Kiến trúcAndroid GUI
Android GUI là một luồng đơn, hƣớng sự kiện và xây dựng trên một thƣ viện của
các thành phần nestable. Nền tảng của Android GUI là đƣợc tổ chức theo mô hình phổ
biến Model-View-Controller.

Hình 1-7: Kiến trúc Android GUI
Model: Model đại diện cho dữ liệu hoặc chứa dữ liệu. Chúng ta có thể thấy nó
nhƣ là một cơ sở dữ liệu của hình ảnh trên thiết bị. Có thể ví dụ, khi ngƣời dùng nghe
một tập tin âm thanh, khi nhấp chuột vào button và nó kích hoạt sự kiện trong ứng
24
Bùi Thị Linh – K16D2
dụng, bây giờ các ứng dụng sẽ có đƣợc dữ liệu từ dữ liệu lƣu trữ hoặc cơ sở dữ liệu và
nhƣ mỗi đầu vào và tạo ra dữ liệu để đƣợc gửi trở lại cho ngƣời sử dụng. Đây chính là
chế độ Model.
View: View là một phần của các ứng dụng chịu trách nhiệm vẽ giao diện hiển thị
trên màn hình, gửi âm thanh tới loa, tạo ra thông tin phản hồi về xúc giác (cảm ứng)
Theo ví dụ trên, phần hiển thị trong một chƣơng trình nghe nhạccó thể chứa một
thành phần hiển thị bìa album cho cho file âm thanh đang chạy. Ngƣời dùng sẽ luôn
luôn tƣơng tác với lớp này. Ngƣời sử dụng tác động tới lớp này sẽ kích hoạt sự kiện đó

và sẽ đi đến các chức năng tƣơng ứng của ứng dụng.
Controller: Controller là một phần của ứng dụng để đáp ứng hành động bên
ngoài: một sự kiện nhấn phím, một sự kiện chạm màn hình, cuộc gọi đến… đƣợc thực
hiện nhƣ một hàng đợi sự kiện. Hành động của ngƣời sử dụng, kiểm soát đƣợc thông
qua bộ điều khiển và điều này sẽ chăm sóc tất cả các logic cần đƣợc thực hiện và
chuẩn bị Model cần phải đƣợc gửi tới lớp View.
1.5. Ứng dụng Android
Một ứng dụng Android là tập hợp của các thành phần. Có 4 loại thành phần:
 Activity: Một Activity là một thành phần giao diện ngƣời dùng tƣơng ứng
với mỗi màn hình mà ngƣời dùng tƣơng tác để làm gì đó.
 Service: Một Service là một thành phần ứng dụng không có giao diện ngƣời
sử dụng để thực hiện các hoạt động lâu chạy ở chế độ nền (background).
 Broadcast Receiver: Một broadcast receiver là một thành phần để phản ứng
với những thông tin quảng bá trong toàn hệ thống. (ví dụ: tắt màn hình, pin
hết )
 Content Provider: Một content provider là một thành phần dùng để lƣu trữ
và truy xuất dữ liệu và làm cho nó có sẵn với tất cả ứng dụng. Có nhiều loại
khác nhau của content provider: audio, video, danh bạ… và bạn có thể cũng
tạo ra provider cho riêng mình.
1.5.1. Khởi động ứng dụng
Mô hình Android khá độc đáo ở chỗ là không có điểm vào đơn cụ thể cho một
ứng dụng - không có hàm main(). Thay vào đó, do Android đƣa các ứng dụng và chu
kỳ sống nên một thành phần trong một ứng dụng có thể bắt đầu thành phần ứng dụng
khác. Giao tiếp giữa các ứng dụng xảy ra theo cơ chế IPC trình bày ở trên. Nhƣ vậy
trong khi một Activity của một ứng dụng này hoạt động, nó lại có khả năng cho phép
một ứng dụng khác bắt đầu nó (nếu ứng dụng sở hữu nó cho phép). Một ví dụ là nhấp
chuột vào một hyperlink trong một ứng dụng mở trên một Browser. Sự cho phép đó
không chỉ ở các Activity, mà còn ở các thành phần khác nữa. Để cho điều này xảy ra,
có hai bƣớc cần thiết:
25

Bùi Thị Linh – K16D2
 Trong trƣờng hợp ứng dụng chƣa sẵn sàng chạy, hệ thống Android sẽ mang
ứng dụng đó vào chu kỳ sống trong quá trình mới tách ra từ Zygote.
 Các thành phần bên trong ứng dụng cần đƣợc kích hoạt.
Chú ý rằng trong trƣờng hợp ứng dụng sẵn sàng chạy, thành phần mới đƣợc khởi
tạo mặc định trong cùng quá trình.
Nhƣ đề cập ở trên, IPC (giao tiếp giữa các thành phần) đƣợc thực hiện thông qua
một đối tƣợng Context. Nhƣ vậy, khi một thành phần A bên trong một ứng dụng cần
để kích hoạt thành phần B khác trong ứng dụng khác hoặc cung cấp cho nó một vài cái
mới để thực hiện, về cơ bản nó sử dụng đối tƣợng Context để gửi một bản tin tới thành
phần khác. Trong trƣờng hợp của một Activity, Service hoặc BroadcastReceiver, dạng
nhiệm vụ này đƣợc gọi là một Intent - một cấu trúc dữ liệu bị động
Tuy nhiên Content Providers không kích hoạt thông qua Intens. Thay vào đó,
kích hoạt xảy ra trên yêu cầu từ một Content Resolver, hoạt động nhƣ một trung gian
giữa các thành phần yêu cầu và Content Provider.
1.5.2. Activity Back-Stack
Xem xét kịch bản sau (hình 1-8):

Hình 1-8: Activity back stack
 Ta có màn hình Home. Đây là Activity 1.
 Ta kích chuột trên biểu tƣợng ứng dụng Mail và thực hiện hành động chính
trong ứng dụng Mail. Đây là Activity 2.
 Bây giờ ta kích chuột trên Soạn Thƣ (Compose) và thực hiện hành động Soạn
thƣ trong ứng dụng Mail. Đây là Activity 3.
 Ta quyết định huỷ soạn tin mới và nhấn nút quay trở lại. Ta quay trở lại
Activity 2.
Đây là những gì đã xảy ra ở background:
 Khi một Activity bắt đầu một Activity khác, nó dừng và trạng thái của nó đƣợc
lƣu.
26

Bùi Thị Linh – K16D2
 Sau khi Activity 1 bắt đầu Activity 2, Activity 1 bị dừng và trạng thái của nó
đƣợc lƣu.
 Hệ thống ngăn xếp chính (back stack) với Activity mới nhất trên đầu và cũ nhất
ở dƣới cùng.
Khi ngƣời dùng nhấn phím back, Activity 3 bị dừng và Activity 2 đƣợc bắt đầu
từ trạng thái lƣu của nó.
Cách tiếp cận này cho phép Android chuyển đổi liên tục từ một ứng dụng sang
ứng dụng khác một cách nhất quán.
1.5.3. Nhiệm vụ Tasks
Trong kịch bản trên, giả sử rằng ngƣời dùng đã ở trong Soạn Thƣ, ngƣời đó lại
quyết định gọi một vài ngƣời và ấn phím Home. Điều này sẽ không ở back-stack,
nhƣng bắt đầu một stack mới. Để làm đƣợc điều này, bộ các Activity trong stack đầu
tiên cần vào trong background. Điều này đạt đƣợc thông qua khái niệm Task - một đơn
vị gắn kết của các Activity. Khi một task di chuyển vào background, tất cả các
Activity trong Task bị dừng nhƣng back-stack cho nhiệm vụ này vẫn còn nguyên vẹn,
nhƣ vậy, khi ngƣời dùng trở lại Task, họ có thể tiếp tục ở nơi kết thúc. Tuy nhiên, để
tiết kiệm bộ nhớ, back-stack cho Task ở background là không đƣợc giữ lại trong một
thời gian dài và nếu ngƣời dùng không quay trở lại Task, back stack sẽ bị xoá.

Hình 1-9: Background và Foreground Task
1.5.4. Vòng đời của Activity
Vòng đời của một Activity bị ảnh hƣởng bởi liên kết của nó với Activity khác,
Task của nó và back-stack của nó. Có 4 trạng thái cho một Activity:
 Hoạt động: Nếu Activity là trong foreground của màn hình.
 Tạm dừng: Activity có thể nhìn thấy, nhƣng có Activity khác trong
foreground và đƣợc ngƣời dùng sử dụng. Điều này xảy ra nếu Activity khác
ở đầu, nhƣng bị mờ hoặc vì nó không chiếm toàn bộ màn hình. Trong trạng
thái tạm dừng, đối tƣợng Activity đƣợc giữ trong bộ nhớ, duy trì tất cả các
trạng thái của nó, thông tin thành viên và vẫn đƣợc đính bởi quản lý

Window. Tuy nhiên nó có thể bị giết trong điều kiện bộ nhớ giảm xuống cực
kỳ thấp.
27
Bùi Thị Linh – K16D2
 Bị dừng: Activity bị che hoàn toàn bởi một Activity khác. Nó vẫn đƣợc lƣu
trữ trong bộ nhớ, duy trì tất cả các trạng thái, thông tin thành viên, tuy nhiên
ngƣời dùng không nhìn thấy vì cửa sổ của nó bị ẩn. Activity nhƣ vậy thƣờng
sẽ bịgiết bởi hệ thống khi bộ nhớ là cần thiết ở nơi khác.
 Bị hủy: Khi Activity tạm dừng hoặc bị dừng, hệ thống có thể hủy Activity
từ bộ nhớ bằng cách yêu cầu nó kết thúc hoặc kill process của nó. Khi hiển
thị lại nó phải khởi động lại hoàn toàn trạng thái trƣớc của nó nhờ vào cơ
chế lƣu trạng thái.

Hình 1-10: Vòng đời của Activity
Lƣu trạng thái Activity
Lƣu ý rằng hệ thống hoàn toàn có thể tiêu diệt một Activity, thậm chí cả tiến
trình mà Activity đang chạy, để lấy lại bộ nhớ. Tuy nhiên, khi ngƣời dùng trở lại
Activity (thông qua back stack), họ vẫn muốn tiếp tục tại thời điểm mà họ đã rời khỏi.
Để làm đƣợc điều này, một Activity phải lƣu trạng thái của nó. Điều đó xảy ra thông
qua phƣơng thức Activity.onSaveInstanceState().

×