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

Tìm hiểu về hệ điều hành android và xây dựng ứng dụng đọc báo online trên 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 (2.57 MB, 66 trang )

Lời cảm ơn
Trong quá trình thực hiện báo cáo Khóa luận tốt nghiệp này em đã nhận được
sự quan tâm giúp đỡ tận tình của nhiều tập thể, cá nhân trong và ngoài trường.
Trước hết, em xin bày tỏ lòng biết ơn sâu sắc tới giảng viên TS. ĐẬU MẠNH
HOÀN, Người đã trực tiếp hướng dẫn em trong suốt quá trình nghiên cứu và thực hiện
đề tài.
Em xin chân thành cảm ơn các thầy giáo, cô giáo trong khoa Kỹ thuật - Công
nghệ thông tin Trường Đại học Quảng Bình đã tạo mọi điều kiện thuận lợi giúp đỡ em
trong suốt quá trình học tập và rèn luyện tại trường.
Em xin bày tỏ lòng biết ơn vô hạn tới gia đình, người thân và bạn bè đã luôn
sát cánh bên em trong suốt quá trình học tập và nghiên cứu đề tài.
Mặc dù trong quá trình nghiên cứu đề tài, bản thân em có những cố gắng nhất
định, song do trình độ và thời gian có hạn nên đề tài không tránh khỏi những thiếu sót.
Vậy kính mong các thầy cô giáo và các bạn đóng góp ý kiến để đề tài của em được
hoàn thiện hơn và rất mong sản phẩm hiện thực của em sẽ trở thành một sản phẩm
mang tính xã hội và phục vụ được trong điều kiện phát triển của nghành CNTT Việt
Nam.
Em xin chân thành cảm ơn!

Quảng Bình, ngày 25 tháng 05 năm 2017
Sinh viên

Trần Nhật Linh


MỤC LỤC
A. TỔNG QUAN ĐỀ TÀI ........................................................................................ 1
1.Lý do chọn đề tài ..................................................................................................... 1
2.Mục tiêu nghiên cứu ................................................................................................ 1
3.Nội dung nghiên cứu ............................................................................................... 1
4.Đối tượng, phạm vi nghiên cứu ............................................................................... 2


5.Phương pháp nghiên cứu: ........................................................................................ 2
B. NỘI DUNG ĐỀ TÀI ............................................................................................ 3
CHƯƠNG I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ HỆ ĐIỀU HÀNH ANDROID 3
1. Hệ điều hành là gì ? ................................................................................................ 3
1.1 Tầm nhìn người dùng ........................................................................................... 3
1.2 Tầm nhìn hệ thống ................................................................................................ 4
1.3 Mục tiêu hệ thống ................................................................................................. 5
1.4 Tóm tắt .................................................................................................................. 6
2. Giới thiệu về hệ điều hành ANDROID .................................................................. 7
2.1 Giới thiệu hệ điều hành Android .......................................................................... 7
2.2 Lịch sử hệ điều hành Android .............................................................................. 8
2.3 Kiến trúc của Android ........................................................................................ 12
2.4 Giao diện người dùng trong Android ................................................................. 15
2.5 Những thách thức đối với hệ điều hành Android ............................................... 17
2.6 Chu kỳ ứng dụng Android .................................................................................. 19
CHƯƠNG II: PHÂN TÍCH XML TRONG ANDROID..................................... 25
1.Tổng quan về XML ............................................................................................... 25
1.1 Khái niệm ........................................................................................................... 25
1.2 Đặc điểm của XML ............................................................................................ 25
2. RSS ....................................................................................................................... 26
2.1 Những điểm mạnh của RSS ............................................................................... 27
3. Các lớp, giao diện phân tích XML trong Android ............................................... 28
3.1 Giao diện DOM .................................................................................................. 28
3.2 Giao diện SAX ................................................................................................... 29
4. Phân tích nội dung XML trong Android sử dụng SAX ....................................... 30
4.1 Sơ lược về SAX .................................................................................................. 30
4.2 Ưu điểm, nhược điểm của SAX ......................................................................... 30
4.3 Các khái niệm dùng trong SAX.......................................................................... 31
5. Các thành phần trong một Android Project .......................................................... 31
5.1 AndroidManifest.xml ......................................................................................... 31

5.2 File R.java ........................................................................................................... 33
CHƯƠNG III. GIỚI THIỆU VỀ ANDROID STUDIO ...................................... 36
1. ANDROID STUDIO ............................................................................................ 36
1.1 Cài đặt môi trường Environment Setup. ............................................................. 36
1.2 Building, Debugging và Testing......................................................................... 37
1.3 Signing và Publishing ......................................................................................... 38
1.4 Android project View ......................................................................................... 38
1.5 Android Build System ........................................................................................ 39
1.6 Project Debug và Performance ........................................................................... 40
1.7 Performance analysis tools ................................................................................. 40


1.8 Code inspections – the Android lint tool ........................................................... 41
1.9 Log messages ...................................................................................................... 41
1.10 Bắt đầu dùng Android studio ............................................................................ 42
1.10.1 Khởi tạo Rroject ............................................................................................ 42
1.10.2 Cấu hình cho dự án Android ......................................................................... 43
1.10.3 Kiểm tra cấu trúc dữ liệu ............................................................................... 45
1.10.4 Tạo thiết bị AVD ........................................................................................... 46
1.10.5 Test chạy ứng dụng........................................................................................ 48
1.10.6 Application Debugging ................................................................................. 50
CHƯƠNG IV: DEOMO ỨNG DỤNG ................................................................. 51
1. Ứng dụng đọc báo trên di động MyWeb: ............................................................. 51
2. Phân tích yêu cầu .................................................................................................. 51
3. Biểu đồ Usecase.................................................................................................... 51
4. Cách lấy tin từ 1 Trang báo RSS .......................................................................... 52
5. Giao diện người dùng ........................................................................................... 55
6. Parser dữ liệu từ server gửi về .............................................................................. 56
C. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ....................................................... 60
1. Kết luận................................................................................................................. 60

2. Hướng phát triển của đề tài: ................................................................................. 60
TÀI LIỆU THAM KHẢO...................................................................................... 61


DANH MỤC TỪ VIẾT TẮT
Tiếng việt:
Từ viết tắt
VD
CNTT

Diễn giải
Ví dụ
Công nghệ thông tin

Tiếng anh:
Từ viết
tắt
XML
API
SAX
CPU
DOM
RSS
GUIs
PC
SGML
SDK
AVK
AWT
JAVA

UTF-8

Diễn giải
Extensible Markup Language
Application Programming Interface
Simple API XML
Central Processing Unit
Document Object Model
Really Simple Syndication
Graphical User Interfaces
Personal Computer
Standard Generalized Markup Language
Software Development Kit
Android Virtual Device
Abstract Windowing Toolkit
Just Another Vague Acronym
Unicode Transformation Format 8-Bit


DANH MỤC HÌNH ẢNH
Hình 1.1. Tầm nhìn trừu tượng các thành phần của một hệ thống máy tính ...........................................3
Hình 1. 2. Cấu trúc Stack hẹ thống Android ..........................................................................................12
Hình 1. 3 chu kỳ sống của ứng dụng ......................................................................................................20
Hình 1. 4. Activity Stack .........................................................................................................................20
Hình 1. 5. Chu kỳ sống của Activity .......................................................................................................21
Hình 1. 6. Gọi hàm transition ................................................................................................................22
Hình 2.1. SAX parsing ............................................................................................................................31
Hình 3.1. AVD Manager ........................................................................................................................37
Hình 3.2. Gradle Scripts ........................................................................................................................38
Hình 3.3. Hệ thống phân cấp cảu project ..............................................................................................39

Hình 3.4. Build System ...........................................................................................................................39
Hình 3.5. Memory Monitor ....................................................................................................................40
Hình 3.6. file heap snapshot ...................................................................................................................41
Hình 3.7. Code inspections ....................................................................................................................41
Hình 3.8. Log meseger ...........................................................................................................................42
Hình 3.9. Start new Android Studio project ...........................................................................................42
Hình 3.10. Create new project ...............................................................................................................43
Hình 3.11. Create Name Application .....................................................................................................43
Hình 3.12. chọn Minimum SDK .............................................................................................................44
Hình 3.13. chọn mẫu Activity .................................................................................................................44
Hình 3. 14 cài đặt thông tin của Activity................................................................................................45
Hình 3.15. kiểm tra cấu trúc dữ liệu ......................................................................................................46
Hình 3.16. tạo thiết bị AVD ....................................................................................................................47
Hình 3.17. chon phiên bản Android .......................................................................................................48
Hình 3.18. cấu hình thiết bị AVD ...........................................................................................................48
Hình 3.19. chọn thiết bị chạy thử ...........................................................................................................49
Hình 3.20. thiết bị ảo..............................................................................................................................49
Hình 3.21. Application Debugging ........................................................................................................50
Hình 4.1. trang báo điện tử VnExpress ..................................................................................................52
Hình 4.2. Danh mục link RSS .................................................................................................................53
Hình 4. 3. Link RSS và tin RSS ...............................................................................................................53
Hình 4.4. giao diện ứng dụng .................................................................................................................55
Hình 4.5. tin chi tiết................................................................................................................................56
Hình 4. 6. Danh mục tin tức ...................................................................................................................56


A. TỔNG QUAN ĐỀ TÀI
Lý do chọn đề tài

1.


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 nhiều 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ày. Các
hệ điều hành J2ME, Android, IOS, Hybrid, Web based Mobile Application đã rất phát
triển trên thị trường truyền thông di động. Tuy nhiên, với hơn 72% thị phần điện thoại
thông minh sử dụng nền tảng Android, đã chứng minh được nền tảng Android có rất
nhiều ưu điểm so với các nền tảng khác. 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. Ngày nay, với sự phát triển nhanh chóng của xã
hội, nhu cầu cập nhật tin tức xã hội mọi lúc mọi nơi là rất cần thiết, vì vậy em đã chọn
đề tài “Tìm hiểu về hệ điều hành Android và xây dựng ứng dụng đọc báo online trên
hệ điều hành Android” để có thể đáp ứng được nhu cầu cập nhật tin tức xã hội hiện
nay một cách nhanh chóng và tiện lợi.
2.

Mục tiêu nghiên cứu


Tìm hiểu tổng quan về hệ điều hành và hệ điều hành Android.




Nghiên cứu phân tích XML trong android



Xây dựng demo ứng dụng app đọc báo trên hệ điều hành Android

3.

Nội dung nghiên cứu


Tìm hiểu tổng quan về hệ điều hành và hệ điều hành Android


Định nghĩa khái niệm hệ điều hành và hệ điều hành Android



Tìm hiểu về sự hình thành và phát triển của hệ điều hành và hệ điều hành
Android
1









Thành phần và giao diện của Android



Kiến trúc và phương thức hoạt động của Android

Nghiên cứu phân tích XML trong android


Tìm hiểu định nghĩa khái niệm và cấu trúc XML trong Android.



Tìm hiểu về RSS, các lớp và giao diện phân tích XML trong Android



Phân tích nội dung XML sử dụng SAX

Nghiên cứu về công cụ hỗ trợ lập trình ANDROID STUDIO
+



Tìm hiều về sự hình thành và môi trường làm việc của Android studio

Xây dựng ứng dụng đọc báo và Demo ứng dụng
+

Nghiên cứu các kỹ thuật lập trình để xây dựng ứng dụng


+

Trình bày về ứng dụng đã làm được, tính năng và giao diện của ứng dụng
đọc báo online trong Android

Đối tượng, phạm vi nghiên cứu

4.


Đối tượng nghiên cứu: Hệ điều hành và hệ điều hành Android, đặc biệt là XML
trong hệ điều hành Android



Phạm vi: Hệ điều hành nói chung và hệ điều hành Android nói riêng.



Nghiên cứu về kỹ thuật lập trình để hỗ trợ cho quá trình xây dựng ứng dụng đọc
báo trên Hệ điều hành Android
Phương pháp nghiên cứu:

5.


Phương pháp nghiên cứu lý thuyết
+


Nghiên cứu lý thuyết về hệ điều hành và hệ điều hành Android

+

Nghiên cứu về ngôn ngữ lập trình java để xây dựng ứng dụng đọc báo RSS
trên Android



Phương pháp nghiên cứu thực nghiệm:



Sử dụng phương pháp nghiên cứu lý thuyết kết hợp với nghiên cứu thực nghiệm
+

Nghiên cứu các công cụ lập trình để xây dựng ứng dụng đọc báo RSS trên
Android.

+

Viết chương trình cho chạy ứng dụng đọc báo RSS trên Android

2


B. NỘI DUNG ĐỀ TÀI
CHƯƠNG I: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ HỆ ĐIỀU HÀNH
ANDROID
1. Hệ điều hành là gì ?

Một hệ điều hành là một thành phần quan trọng của mọi hệ thống máy tính. Một
hệ thống máy tính có thể được chia thành bốn thành phần: phần cứng, hệ điều hành,
các chương trình ứng dụng và người dùng.
 Phần cứng (Hardware): bao gồm bộ xử lý trung tâm (CPU), bộ nhớ, thiết bị
xuất/nhập, …cung cấp tài nguyên cơ bản cho hệ thống
 Các chương trình ứng dụng (application programs): trình biên dịch (compiler),
trình soạn thảo văn bản (text editor), hệ cơ sở dữ liệu (database system), trình duyệt
Web, …định nghĩa cách mà trong đó các tài nguyên được sử dụng để giải quyết yêu
cầu của người dùng
 Người dùng (user): có nhiều loại người dùng khác nhau, thực hiện những yêu
cầu khác nhau, do đó sẽ có nhiều ứng dụng khác nhau
 Hệ điều hành (operating system): hay còn gọi là chương trình hệ thống, điều
khiển và hợp tác việc sử dụng phần cứng giữa những chương trình ứng dụng khác
nhau cho những người dùng khác nhau. Hệ điều hành có thể được khám phá từ hai
phía: người dùng và hệ thống

Hình 1.1. Tầm nhìn trừu tượng các thành phần của một hệ thống máy tính
1.1 Tầm nhìn người dùng
Tầm nhìn người dùng của máy tính rất đa dạng bởi giao diện được dùng. Hầu hết
những người dùng máy tính ngồi trước máy tính cá nhân gồm có màn hình, bàn phím,
3


chuột và bộ xử lý hệ thống (system unit). Một hệ thống như thế được thiết kế cho một
người dùng độc quyền sử dụng tài nguyên của nó để tối ưu hoá công việc mà người
dùng đang thực hiện. Trong trường hợp này, hệ điều hành được thiết kế dễ dàng cho
việc sử dụng với sự quan tâm về năng lực nhưng không quan tới việc sử dụng tài
nguyên. Năng lực thực hiện là quan trọng với người dùng nhưng không là vấn đề nếu
hầu hết hệ thống đang rãnh, chờ tốc độ xuất/nhập chậm từ phía người dùng.
Vài người dùng ngồi tại thiết bị đầu cuối (terminal) được nối kết tới máy tính lớn

(mainframe) hay máy tính tầm trung (minicomputer). Những người khác đang truy
xuất cùng máy tính thông qua các thiết bị đầu cuối khác. Những người dùng này chia
sẻ các tài nguyên và có thể trao đổi thông tin. Hệ điều hành được thiết kế để tối ưu hoá
việc sử dụng tài nguyên-để đảm bảo rằng tất cả thời gian sẳn dùng của CPU, bộ nhớ và
thiết bị xuất nhập được sử dụng hữu hiệu và không cá nhân người dùng sử dụng độc
quyền tài nguyên hơn là chia sẻ công bằng.
Những người dùng khác ngồi tại trạm làm việc, được nối kết tới mạng của các
trạm làm việc khác và máy chủ. Những người dùng này có tài nguyên tận hiến là trạm
làm việc của mình nhưng họ cũng chia sẻ các tài nguyên trên mạng và các máy chủtập tin, tính toán và các máy phục vụ in. Do đó, hệ điều hành của họ được thiết kế để
thoả hiệp giữa khả năng sử dụng cá nhân và việc tận dụng tài nguyên.
Gần đây, sự đa dạng của máy tính xách tay trở thành thời trang cho những người
làm việc trong lãnh vực công nghệ thông tin. Các thiết bị này được sử dụng chỉ bởi cá
nhân người dùng. Một vài máy tính này được nối mạng hoặc nối trực tiếp bằng dây
hay thông qua các modem không dây. Do sự giới hạn về năng lượng (điện) và giao
diện, chúng thực hiện tương đối ít các thao tác ở xa. Hệ điều hành được thiết kế chủ
yếu cho việc sử dụng cá nhân nhưng năng lực thực hiện trên thời gian sống của pin
cũng là yếu tố quan trọng.
Một số máy tính có rất ít hay không có tầm nhìn người dùng. Thí dụ, các máy
tính được nhúng vào các thiết bị gia đình và xe ôtô có thể có một bảng số và các đèn
hiển thị trạng thái mở, tắt nhưng hầu hết chúng và các hệ điều hành được thiết kế để
chạy mà không cần giao tiếp.
1.2 Tầm nhìn hệ thống
Từ quan điểm của máy tính, hệ điều hành là chương trình gần gủi với phần cứng.
Chúng ta có thể thấy một hệ điều hành như bộ cấp phát tài nguyên. Hệ thống máy tính
4


có nhiều tài nguyên - phần cứng và phần mềm - mà có thể được yêu cầu để giải quyết
một vấn đề: thời gian CPU, không gian bộ nhớ, không gian lưu trữ tập tin, các thiết bị
xuất/nhập, ...Hệ điều hành hoạt động như bộ quản lý tài nguyên. Đương đầu với một

lượng lớn các yêu cầu có thể xung đột về tài nguyên, hệ điều hành phải quyết định
cách cấp phát tài nguyên tới những chương trình cụ thể và người dùng để có thể điều
hành hệ thống máy tính hữu hiệu và công bằng.
Một tầm nhìn khác của hệ điều hành nhấn mạnh sự cần thiết để điều khiển các
thiết bị xuất/nhập khác nhau và chương trình người dùng. Một hệ điều hành là một
chương trình điều khiển. Chương trình điều khiển quản lý sự thực thi của các chương
trình người dùng để ngăn chặn lỗi và việc sử dụng không hợp lý máy tính. Nó đặc biệt
quan tâm với những thao tác và điều khiển các thiết bị nhập/xuất.
Nhìn chung, không có định nghĩa hoàn toàn đầy đủ về hệ điều hành. Các hệ điều
hành tồn tại vì chúng là cách hợp lý để giải quyết vấn đề tạo ra một hệ thống máy tính
có thể sử dụng. Mục tiêu cơ bản của hệ thống máy tính là thực thi chương trình người
dùng và giải quyết vấn đề người dùng dễ dàng hơn. Hướng đến mục tiêu này, phần
cứng máy tính được xây dựng. Tuy nhiên, chỉ đơn thuần là phần cứng thì không dễ sử
dụng và phát triển các chương trình ứng dụng. Các chương trình khác nhau này đòi
hỏi những thao tác chung nào đó, chẳng hạn như điều khiển thiết bị xuất/nhập.
Sau đó, những chức năng chung về điều khiển và cấp phát tài nguyên được đặt
lại với nhau vào một bộ phận phần mềm gọi là hệ điều hành.
Cũng không có định nghĩa bao quát nào được chấp nhận để xác định phần gì
thuộc về hệ điều hành, phần gì không. Một quan điểm đơn giản là mọi thứ liên quan
khi chúng ta ra lệnh hệ điều hành nên được xem xét. Tuy nhiên, những yêu cầu về bộ
nhớ và những đặc điểm bên trong rất khác nhau trong từng hệ thống. Một định nghĩa
bao quát hơn về hệ điều hành là một chương trình chạy liên tục trên máy tính (thường
gọi là nhân kernel), những chương trình còn lại thuộc về chương trình ứng dụng.
1.3 Mục tiêu hệ thống
Định nghĩa những gì hệ điều hành làm thì dễ hơn xác định hệ điều hành là gì.
Mục đích chính của hệ điều hành là dễ dàng sử dụng. Vì sự tồn tại của hệ điều hành hỗ
trợ nhiều cho máy tính trong việc đáp ứng các ứng dụng của người dùng. Tầm nhìn
này đặc biệt rõ ràng hơn khi nhìn hệ điều hành trên các máy tính cá nhân.

5



Mục tiêu thứ hai của hệ điều hành là điều hành hữu hiện hệ thống máy tính. Mục
tiêu này đặc biệt quan trọng cho các hệ thống lớn, được chia sẻ, nhiều người dùng.
Những hệ thống tiêu biểu này khá đắt, khai thác hiệu quả nhất các hệ thống này luôn là
điều mong muốn. Tuy nhiên, hai mục tiêu tiện dụng và hữu hiệu đôi khi mâu thuẫn
nhau. Trong quá khứ, xem xét tính hữu hiệu thường quan trọng hơn tính tiện dụng. Do
đó, lý thuyết hệ điều hành tập trung nhiều vào việc tối ưu hoá sử dụng tài nguyên tính
toán. Hệ điều hành cũng phát triển dần theo thời gian. Thí dụ, UNIX bắt đầu với bàn
phím và máy in như giao diện của nó giới hạn tính tiện dụng đối với người dùng. Qua
thời gian, phần cứng thay đổi và UNIX được gắn vào phần cứng mới với giao diện
thân thiện với người dùng hơn. Nhiều giao diện người dùng đồ hoạ GUIs (graphical
user interfaces) được bổ sung cho phép tiện dụng hơn với người dùng trong khi vẫn
quan tâm tính hiệu quả.
Thiết kế hệ điều hành là một công việc phức tạp. Người thiết kế gặp phải nhiều
sự thoả hiệp trong thiết kế và cài đặt. Nhiều người tham gia không chỉ mang đến hệ
điều hành những lợi điểm mà còn liên tục xem xét và nâng cấp.
Để thấy rõ những hệ điều hành là gì và những gì hệ điều hành làm, chúng ta xem
xét cách chúng phát triển trong bốn mươi lăm năm qua. Bằng cách lần theo sự tiến
triển, chúng ta có thể xác định những thành phần của hệ điều hành và thấy cách thức
và lý do hệ điều hành phát triển như chúng có.
Hệ điều hành và kiến trúc máy tính có mối quan hệ khăng khít nhau. Để dễ dàng
sử dụng phần cứng, hệ điều hành được phát triển. Sau đó, các người dùng hệ điều hành
đề nghị những chuyển đổi trong thiết kế phần cứng để đơn giản chúng. Nhìn lại lịch sử
ngắn ngủi này, chú trọng cách giải quyết những vấn đề về hệ điều hành để giới thiệu
những đặc điểm phần cứng.
1.4 Tóm tắt
Hệ điều hành được phát triển hơn 45 năm qua với hai mục đích chính.
 Mục đích thứ nhất, hệ điều hành cố gắng lập thời biểu các hoạt động tính toán
để đảm bảo năng lực thực hiện của hệ thống là tốt.

 Mục đích thứ hai, nó cung cấp một môi trường tiện dụng để phát triển và thực
thi chương trình.
Ban đầu, hệ thống máy tính được dùng từ một màn hình và bàn phím (thiết bị đầu
cuối). Các phần mềm như bộ hợp ngữ (assembler), bộ nạp (loader), bộ liên kết
6


(linkers) và các trình biên dịch (compiler) cải tiến sự tiện dụng của việc lập trình hệ
thống nhưng cũng yêu cầu thời gian thiết lập đáng kể. Để giảm thời gian thiết lập, các
phương tiện thuê người điều hành và các công việc tuơng tự được bó.
Các hệ thống xử lý theo lô cho phép sắp xếp công việc tự động bởi hệ điều hành
và cải tiến rất nhiều việc tận dụng toàn bộ máy tính. Máy tính không còn phải chờ các
thao tác của người dùng. Tuy nhiên, việc tận dụng CPU vẫn còn thấp vì tốc độ của
thiết bị xuất nhập thấp hơn nhiều so với tốc độ của CPU. Thao tác ngoại vi (off-line
operation) của các thiết bị chậm cung cấp một phương tiện sử dụng nhiều hệ thống bộ
đọc tới băng từ (reader-to-tape) và băng từ tới máy in (tape-to-printer) cho một CPU.
Để cải tiến toàn bộ năng lực thực hiện của hệ thống máy tính, người phát triển giới
thiệu khái niệm đa chương để mà nhiều công việc có thể được giữ cùng lúc trong bộ
nhớ tại cùng một thời điểm. CPU được chuyển qua lại giữa chúng để gia tăng việc tận
dụng CPU và giảm toànbộ thời gian được yêu cầu để thực thi các công việc.
2. Giới thiệu về hệ điều hành ANDROID
2.1 Giới thiệu hệ điều hành Android
Android là một hệ điều hành di động dựa trên một phiên bản sửa đổi của hệ điều
hành Linux.
Được phát triển vào năm 2005 với một dự án cùng tên “Android”. Như một phần
chiến lược của mình để lấn sâu vào lĩnh vực di động Google Android đã mua về toàn
bộ quá trình phát triển cũng như đội phát triển nó.
Google Android muốn mở và miễn phí, vì cậu hầu hết các mã android được được
đưa ra dưới dạng mã nguồn mở Apache License, điều này tương đương với việc bất cứ
ai muốn sử dụng android có thể làm như vậy bằng cách tải về mã nguồn android đầy

đủ. Hơn nữa các nhà cung cấp (thường là những nhà phát triển phần cứng) có thể thêm
phần mở rộng và tùy biến cho android để phân biệt sản phẩm của họ với sản phẩm của
những người khác. Điều này đơn giản làm làm cho mô hình phát triển 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. Điều này đặc biệt đúng
với các công ty bị ảnh hưởng bởi hiện tượng này như là Iphone của Apple, một sản
phẩm cực kì thành công trong công cuộc cách mạng hóa ngành công nghiệp
smartphone. Các công ty này bao gồm Motorola và Sony Ericsson mà trong nhiều năm
đã phát triển được hệ điều hành riêng cho điện thoại di động của họ. Kho Iphone được
đưa ra, một số những nhà sản xuất đã tìm được một con đường mới để làm sống dậy
7


sản phẩm của họ. Những nhà sản xuất coi android như một giải pháp – họ sẽ tiếp tục
thiết kế phần cứng của riêng mình và sử dụng adroid như một hệ điều hành chính.
Ưu điểm chính của việc áp dụng android là nó cung cấp một cách tiếp cận thống
nhất để phát triển ứng dụng. Các nhà phát triển chỉ cần phát triển cho android và các
ứng dụng của họ có thể chạy trên nhiều thiết bị khác nhau, miễn là các thiết bị được hỗ
trợ bằng cách sử dụng android. Trong thế giới smartphone ứng dụng là một phần quan
trọng nhất của chuỗi thành công. Do đó các nhà sản xuất thiết bị coi android như là hy
vọng tốt nhất để thách thức sự tấn công của Iphone.
2.2 Lịch sử hệ điều hành Android
Năm 2003, một công ty hoạt động trong lĩnh vực phát triển phần mềm cho các
thiết bị di động mang tên là Android được thành lập bởi 4 thành viên là
 Andy Rubin (nhà đồng sáng lập công ty Danger - công ty chuyên về các nền
tảng, phần mềm, thiết kế, và dịch vụ cho các thiết bị điện toán di động)
 Rich Miner (nhà đồng sáng lập công ty truyền thông Wildfire Communications)
 Nick Sears (một trong những vị phó chủ tịch của nhà cung cấp mạng viễn thông
di động T-Mobile ở Mỹ)
 Chris White (trưởng bộ phận thiết kế và phát triển giao diện của WebTV)
Năm 2005, sau hơn 2 năm hoạt động thì Android được Google mua lại với một

khoản tiền không được tiết lộ và chính thức trở thành một trong những công ty con của
gã khổng lồ ngành tìm kiếm. Đồng thời cả Andy Rubin, Rich Miner và Chris White
đều quyết định tiếp tục làm việc tại chính công ty của mình sau khi được mua lại. Ở
thời điểm đó, nhiều người không thực sự chú ý vào thương vụ này, thế nhưng nó lại
đánh dấu bước đi đầu tiên của Google trong thị trường thiết bị di động thế giới.
Tại Google, một nhóm nghiên cứu đứng đầu là Rubin đã bắt đầu phát triển một
nền tảng dành cho thiết bị di động dựa trên nhân của hệ điều hành Linux. Và sau đó,
hệ điều hành này cũng được giới thiệu đến các nhà phát triển phần cứng lẫn phần
mềm, báo hiệu sự có mặt của một "ngôi sao" khác trên "thiên hà" thị trường công nghệ
di động.
Đến tháng 12 năm 2006, suy đoán về ý định gia nhập thị trường truyền thông di
động của Google tiếp tục được củng cố sau khi BBC và The Wall Street Journal cho
biết rằng hãng này muốn đưa ứng dụng và chức năng tìm kiếm của mình lên các thiết

8


bị di động. Lập tức ngay sau đó, nhiều tin đồn về chiếc điện thoại mang thương hiệu
Google xuất hiện khắp các phương tiện truyền thông.
Tháng 5 năm 2007, liên minh các nhà sản xuất thiết bị cầm tay - Open Handset
Alliance (OHA) được thành lập bao gồm Google và một số thành viên khác của cộng
đồng Linux mở như: Broadcom Corporation, Google, HTC, Intel, LG, Marvell
Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint
Nextel, T-Mobile và Texas Instruments. Mục tiêu của OHA là phát triển tiêu chuẩn
mở cho các thiết bị di động và sản phẩm đầu tiên của liên minh này đó là Android, một
nền tảng di động được xây dựng trên nhân Linux phiên bản 2.6.
Tính cho đến thời điểm này, Google Android đã có 10 phiên bản chính thức và 1
phiên bản sắp ra mắt được đặt tên theo những món tráng miệng, với ngụ ý người dùng
sẽ dễ dàng sử dụng hệ điều hành của họ như thưởng thức các món ăn đó. Các phiên
bản Android có tên mã lần lượt là: Cupcake 1.5, Donut 1.6, Eclair 2.0, Froyo 2.2,

Gingerbread 2.3, Honeycomb 3.0/3.1, Android Ice Cream Sandwich 4.0, Jelly Bean
Đa chương cũng cho phép chia sẻ thời gian. Hệ điều hành chia sẻ thời gian cho
phép nhiều người dùng (từ một tới vài trăm) sử dụng hệ thống máy tính giao tiếp tại
cùng một thời điểm. PC là máy vi tính; chúng xem như nhỏ hơn và rẻ hơn hệ thống
mainframe. Các hệ điều hành cho các máy tính này lợi hơn việc phát triển hệ điều
hành cho máy tính mainframe trong nhiều cách. Tuy nhiên, vì mỗi cá nhân là người
dùng duy nhất sử dụng máy tính nên việc tận dụng CPU không còn là mối quan tâm
chủ yếu. Do đó, một vài quyết định thiết kế được thực hiện cho hệ điều hành cho máy
mainframe có thể không phù hợp cho cả hệ thống nhỏ và lớn, hiện nay khi các PCs có
thể được nối kết tới các máy tính khác và người dùng thông qua mạng và Web.
Các hệ song song có nhiều hơn một CPU trong giao tiếp gần; các CPU chia sẻ
bus máy tính và đôi khi chia sẻ bộ nhớ và các thiết bị ngoại vi. Những hệ thống như
thế có thế cung cấp thông lượng và khả năng tin cậy tăng. Các hệ thống phân tán cho
phép chia sẻ tài nguyên trên những máy chủ được phân tán về mặt địa lý. Các hệ thống
được nhóm cho phép nhiều máy thực hiện việc tính toán trên dữ liệu được chứa trên
thiết bị lưu trữ chia sẻ và để việc tính toán tiếp tục trong trường hợp lỗi của tập hợp
con các thành viên nhóm.
Một hệ thời thực cứng thường được dùng như một thiết bị điều khiển trong một
ứng dụng tận hiến. Một hệ điều hành thời thực cứng có ràng buộc hoàn toàn xác định
9


và thời gian cố định. Xử lý phải được thực hiện trong các ràng buộc được xác định
hoặc hệ thống sẽ bị lỗi. Các hệ thống thời thực mềm có ràng buộc thời gian ít nghiêm
khắc hơn và không hỗ trợ thời biểu tới hạn.
Gần đây sự tác động của Internet và World Wide Web khuyến khích sự phát triển
của các hệ điều hành hiện đại. Các hệ điều hành này chứa các trình duyệt Web, mạng
và phần mềm truyền Chúng ta đã thể hiện tiến trình luận lý của sự phát hệ điều hành,
được định hướng bởi sự bao gồm các đặc điểm trong phần cứng CPU được yêu cầu
cho chức năng tiên tiến. Xu hướng này có thể được thấy ngày nay trong cuộc cách

mạng của PC, với phần cứng ngày một rẻ hơn và đang được cải tiến đủ để cho phép
cải tiến các đặc điểm
Số hiệu

Ngày phát hành

Tên

1.0

23/9/2008

1.1

9/2/2009

1.5

30/4/2009

Cupcake

1.6

15/9/2009

Donut

2.0/2.1


26/10/2009

Eclair

2.2.x

20/5/2010

Froyo

2.3.x

6/12/2010

Gingerbread

3.x

22/2/2011

Honeycomb

4.0.x

19/10/2011

Ice Cream Sandwich

4.1/4.2


7/6/2012

Jelly Bean

4.3

24/7/2013

Jelly Bean

4.4

22/11/2013

Kitkat

5.0

3/11/2014

Lotlipop

5.1

2/2015

Lotlipop

6.0


30/09/2015

Marshmallow

Bảng1: Sự phát triển các phiên bản Android
10


Phiên bản 1.5 (Cupcake): Ra mắt tháng 4/2009: Phiên bản này có một số tính
năng đáng chú ý như: khả năng ghi lại và xem video thông qua chế độ máy ghi hình,
tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện thoại, tích hợp bàn phím ảo
với khả năng đoán trước văn bản, tự động kết nối với một thiết bị Bluetooth trong một
khoảng cách nhất định, các widget và thư mục mới có thể cài đặt linh động trên màn
hình chủ.
Phiên bản 1.6 (Donut): Ra mắt tháng 9/2009: Phiên bản này giúp Nâng cao trải
nghiệm trên kho ứng dụng Android Market, tích hợp giao diện tùy biến cho phép
người dùng xóa nhiều ảnh cùng lúc, nâng cấp Voice Search, nâng cấp khả năng tìm
kiếm bookmarks, history, contacts và web trên màn hình chủ, bước đầu hỗ trợ màn
hình độ phân giải WVGA.
Phiên bản 2.0/2.1 (Eclair): Ra mắt tháng 10/2009. Phiên bản này có sự cải thiện
rõ rệt trong giao diện người dùng, tối ưu hóa tốc độ phần cứng, hỗ trợ nhiều kích cỡ và
độ phân giải màn hình hơn, thay đổi giao diện duyệt web và hỗ trợ chuẩn HTML5,
Exchange ActiveSync 2.5, nâng cấp Google Maps 3.1.2, camera zoom kĩ thuật số tích
hợp đèn flash, nâng cấp bàn phím ảo và kết nối Bluetooth 2.1.
Phiên bản 2.2 (Froyo): Ra mắt tháng 5/2010: Phiên bản này chú trọng nâng cấp
tốc độ xử lí, giới thiệu engine Chrome V8 JavaScript, hỗ trợ Adobe Flash10.1, thêm
tính năng tạo điểm truy cập Wi-Fi. Một tính năng đáng chú ý khác hỗ trợ chuyển đổi
nhanh chóng giữa các ngôn ngữ và từ điển trên bàn phím đồng thời cho phép cài đặt và
cập nhật ứng dụng ở các thiết bị mở rộng bộ nhớ. Một trong những smartphone đầu
tiên chạy phiên bản Android 2.2 Froyo là LG Optimus One.

Phiên bản 2.3 (Gingerbread): Ra mắt tháng 12/2010: Phiên bản này đã nâng cấp
đáng kể giao diện người dùng, cải thiện bàn phím ảo, thêm tính năng copy/paste, hỗ
trợ công nghệ giao tiếp tầm sóng ngắn NFC, hỗ trợ chuẩn video WebM và nâng cao
tính năng copy–paste. Cùng với phiên bản Gingerbread, Google cũng ra mắt điện thoại
đầu tiên của hãng sử dụng nền tảng này là Google Nexus S.
Phiên bản 3.0 (Honeycomb): Ra mắt tháng 2/2011: Đây là phiên bản hệ điều
hành dành riêng cho máy tính bảng tablet với giao diện mới tối ưu hóa cho tablet, từ
các thao tác đều phụ thuộc màn hình cảm ứng (như lướt web, duyệt mail..).
Honeycomb hỗ trợ bộ xử lí đa nhân và xử lý đồ họa đồng thời hỗ trợ nhiều màn hình
home khác nhau, cho phép người dùng dễ dàng tùy biến giao diện nếu muốn.
11


Phiên bản 4.0 (Icecream Sandwich): Ra mắt tháng 10/2011: Được Google giới
thiệu như một bản nâng cấp toàn diện cho các phiên bản trước đó với rất nhiều thay
đổi, từ cách sử dụng cho đến giao diện và bổ sung nhiều tính năng mới. Trong tương
lai, Android 4.0 sẽ tiếp tục xuất hiện trên cả những chiếc điện thoại lẫn máy tính bảng
và trên mọi phân khúc sản phẩm chứ không chỉ nhắm vào người dùng cao cấp.
Phiên bản 4.1(Jelly Bean): Ra mắt tháng 6/2012: Hỗ trợ mạnh mẽ khả năng thực
hiện các tác vụ bằng giọng nói, hỗ trợ mạnh các mạng xã hội, tăng khả năng kết nối
cũng nhưng sự tiết kiệm điện đối với các thiết bị sử dụng Android...
2.3 Kiến trúc của Android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android.
Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây.

Hình 1. 2. Cấu trúc Stack hẹ thống Android
2.3.1 Tầng ứng dụng:
Tại lớp trên cùng bạn sẽ tìm thấy các ứng dụng cho android (như điện thoại, danh
bạ, trình duyệt, …) cũng như các ứng dụng bạn tải về và cài đặt từ AndroidMarket hay
bất lý ứng dụng nào bạn viết được tại tầng này. Những chương trình viết ở tầng này

đều có dạng file có phần mở rộng là: apk. Là tầng chủ yếu cho các lập trình viên viết
các ứng dụng game, tiện ích… cho người dùng. Các ứng dụng ở tầng này có đặc điểm
là:
 Viết bằng Java, phần mở rộng là apk
 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ì
12


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ử dung quá 5~10% công
suất CPU, điều đó nhằn để 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.
2.3.2 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà
phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo. Nhà phát
triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch
vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái,
và nhiều, nhiều hơn nữa.
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng
bởi các ứng dụng lõi. Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử
dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng

dụng nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được
thực thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ được thay
thế bởi người sử dụng.
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
 Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết kế
phần giao diện ứng dụng như: gridview, tableview, linearlayout, …
 Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu từ các
ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó.
 Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: localized strings, graphics, and layout files.
 Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các custom
alerts trong status bar.
Activity Maanager được dùng để quản lý chu trình sống của ứng dụng và điều
hướng các activity.
13


2.3.3 Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều thành
phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua nền tảng
ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:
 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.
 3D libraries –Thư viên sử dụng để tăng tốc phần 3D cứng hoặc phần mềm3D
được tối ưu hóa cao.

 FreeType – Vẽ vector, phông chữ
 SQLite – Cơ sở dữ liệu quan hệ nhúng, mở mã nguồn.
2.3.4 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 để 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 registerbased, 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.
2.3.5 Linux kernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như security,
memory management, process management, network stack, and driver model. Kernel
Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần
mềm stack.
 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...).
14


 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, chủ yếu là trên bàn phím chạm.
 Wifi Driver: Hệ thống điều khiển 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 ghilên các thiết bị nhớ như thẻ SD.
2.4 Giao diện người dùng trong Android
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 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.
2.4.1 Các thành phần giao diện Widget
Có rất nhiều cách bố trí giao diện. Sử dụng nhiều hơn và các loại khác nhau của
các view group, bạn có thể cấu trúc views con và view groups trong vô số cách. Xác
định các nhóm xem được cung cấp bởi Android (gọi là layouts) bao gồm
LinearLayout, RelativeLayout, TableLayout, GridLayout và khác. Mỗi cung cấp một
bộ duy nhất của các thông số bố trí được sử dụng để xác định vị trí của views con và
cơ cấu layout Để tìm hiểu về một số các loại khác nhau của các view group được sử
dụng cho một layout, đọc Giao diện đối tượng thường gặp. Widget là một object View
phục vụ như một giao diện để tương tác với người dùng. Android cung cấp một tập các
widgets thực hiện đầy đủ, giống như các button, Checkbox, và text-entry, do đó bạn có
thể nhanh chóng xây dựng giao diện người dùng của bạn. Một số widgets được cung
15


cấp bởi Android phức tạp hơn, giống như một date picker, clock, và zoom controls.
Nhưng nó không giới hạn trong các loại widgets được cung cấp bởi các nền tảng
Android.
2.4.2 Bắt sự kiện trong Android
Android Khi đã thêm một số Views/widgets đến giao diện. Để được thông báo về

UI events người dùng, cần phải làm một trong hai điều: Xác định một sự kiện nghe và
đăng ký nó với các View. Đây là cách lắng nghe sự kiện. Các class View có một
phương pháp gọi là On(). Ví dụ: View.OnClickListener (để xử lý "nhấp chuột" trên
một View), View.OnTouchListener (để xử lý các sự kiện màn hình cảm ứng trong một
View), và View.OnKeyListener (để xử lý thiết bị ép quan trọng trong một View). Vì
vậy nếu muốn View được thông báo khi nó là " clicked" (chẳng hạn như khi một nút
được chọn), thực hiện và xác định OnClickListener của nó gọi method onClick() (nơi
thực hiện các hành động sau khi nhấp chuột), và đăng ký nó vào Xem với
setOnClickListener(). Ghi đè một callback method hiện cho View. Đây là những gì
nên làm gì khi đã thực hiện lớp View của riêng bạn và muốn lắng nghe cho các sự kiện
cụ thể xảy ra trong nó. Ví dụ về các sự kiện có thể xử lý bao gồm màn hình là
touched onTouchEvent() khi trackball là di chuyển onTrack ballEvent() hoặc khi một
phím trên thiết bị được nhấn onKeyDown(). Điều này cho phép xác định các hành vi
mặc định cho từng sự kiện bên trong tuỳ chỉnh View và xác định xem sự kiện này cần
được thông qua ngày để View con khác. Một lần nữa, đây là những callbacks View
class, do đó, cơ hội duy nhất của bạn để xác định đó là khi bạn xây dựng một phần tùy
chỉnh
2.4.3 Menu
Menu đơn có một phần quan trọng của giao diện người dùng trong một ứng
dụng. Menus cung cấp một giao diện đáng tin cậy cho thấy rằng các chức năng ứng
dụng và cài đặt. Trong trình đơn ứng dụng phổ biến nhất là tiết lộ bằng cách bấm phím
MENU trên thiết bị. Tuy nhiên, cũng có thể thêm Context Menus, có thể hiển thị khi
người sử dụng máy nhấn và nắm giữ phím trên một mục. Thực đơn cũng được hệ
thống phân cấp cấu trúc bằng cách sử dụng một xem, nhưng bạn không xác định cấu
trúc này cho mình. Thay vào đó, xác định onCreateOptionsMenu() or onCreate
Context Menu() gọi method cho hoạt động của mình và tuyên bố các mục mà mình
muốn bao gồm trong menu của mình. Trong một thời gian thích hợp, Android sẽ tự
16



động tạo ra hệ thống View phân cấp cần thiết cho menu, và rút ra mỗi trong mỗi menu
items đó.

2.5 Những thách thức đối với hệ điều hành Android
2.5.1 Sự phân mảnh
Sự phân mảnh của Android là gì? Đó là sự phân chia thành nhiều loại khác nhau
khi nói đến phiên bản Android, kích thước màn hình của những thiết bị Android, độ
phân giải, giao diện, tên nhà sản xuất, model máy,... Hiện tượng phân mảnh sẽ làm suy
yếu khả năng tương tác trên cùng một nền tảng (ở đây là Android). Khi ứng dụng
tương thích với phiên bản hệ điều hành này và thiết bị này lại không chạy được trên
phiên bản khác và thiết bị khác sẽ gây khó khăn cho người dùng, nhà sản xuất và cả
lập trình viên. Vì vậy, các nhà cung cấp sẽ gặp trở ngại lớn khi cần tạo ra những ứng
dụng thích hợp với nhiều dòng máy khác nhau.
2.5.2 Phần cứng ly tán
Phân hóa trong phần mềm đã tồi tệ, phân hóa trong phần cứng còn khó chịu hơn.
Vì Android là HĐH mở nên ai cũng có thể sản xuất 1 smartphone chạy Android. Có
nghĩa là bạn sẽ có rất nhiều lựa chọn về phần cứng, chip 600Mhz hay 1Ghz, thậm chí
là lõi kép, RAM 512Mb hay 1Gb, bàn phím cứng hay không đều không thành vấn đề.
Có lẽ nguyên nhân của vấn đề bắt nguồn từ bản chất của OHA. Liên minh Android
được thành lập bởi hàng loạt các công ty sản xuất chip điện tử cũng như phần cứng,
một vài cái tên đáng chú ý có thể kể đến như HTC, Motorola, Samsung, Intel,
Qualcomm, Nvidia.... Tất cả các thành viên đó chắc chắn đều muốn rằng Android có
thể chạy ổn định trên phần cứng của mình, dẫn đến tính "dễ dãi" của Android là không
thể tránh khỏi. Nhìn chung, đó là một điểm mạnh của Android, nhưng cũng vì thế mà
phần cứng của Android rải rác khắp thượng vàng hạ cám. Riêng GPU đã có 4,5 kiến
trúc xử lý. Andreno của Qualcomm, PowerVR của Samsung, GeForce ULV của
Nvidia...
Điều này lại dẫn tới 1 hệ quả khác, đó là 1 phần mềm (game chẳng hạn) có thể
chạy rất tốt trên 1 thiết bị, nhưng sang 1 thiết bị khác, có sức mạnh phần cứng tương
đương (thậm chí là mạnh hơn), thì lại không thể hoạt động được. Lý do là vì kiến trúc

xử lý không hỗ trợ. Vì thế khi viết 1 game cho Android, nhà phát hành game sẽ phải
17


viết game cho 4,5 hệ thống xử lý khác nhau, dẫn tới chi phí và thời gian phát triển tăng
vọt.
Sự tăng tiến của Android dẫn đến một hiệu ứng dây chuyền: Android phát triển
càng nhanh, các sản phẩm được tung ra càng nhiều thì sự phân hóa càng sâu sắc và rõ
rệt, kết quả là các nhà sản xuất sẽ càng cảm thấy "thối chí" khi việc phát triển phần
mềm cho Android quá phức tạp. Và bên chịu thiệt nhất tất nhiên vẫn là người sử dụng.
2.5.3 Phân mảnh phiên bản
Do Google tung ra các phiên bản Android quá nhanh trong thời gian ngắn nên dẫn
đến nhiều vấn đề. Nếu một chiếc điện thoại Android muốn nâng cấp lên phiên bản mới
hơn thì nhà sản xuất điện thoại đó phải hiệu chỉnh lại nhiều thứ. Và việc cập nhập một
sản phẩm cũ đắt hơn so với việc phát triển một sản phẩm mới. Vì thế người ta chẳng
buồn cập nhật, mà chỉ đơn giản là làm luôn ra 1 sản phẩm khác và đem tiếp thị, mặc
người sử dụng mắc kẹt với những phiên bản phần mềm cũ kỹ.
Điều này cộng với khi phát triển phần mềm, người lập trình luôn hướng tới số
đông. Vì thế ngay cả khi Android đã lên 2.3, thì phần lớn số lượng ứng dụng mới đưa
lên Android Market vẫn được viết để tương thích với phiên bản 2.2. Chính điều này
khiến cho người sử dụng điện thoại chịu nhiều thiệt thòi, mua thiết bị mới nhất, nhưng
đại đa số các phần mềm lại hoạt động không ổn định, thiếu cập nhật, vì chúng còn phải
phục vụ những thiết bị mang phiên bản cũ hơn, chiếm số đông.
Việc trên cùng 1 nền tảng tồn tại quá nhiều phiên bản cùng hoạt động sẽ gây lãng
phí rất nhiều đến công sức của các nhà phát triển phần mềm. Thay vì bỏ công sức tập
trung viết cho nền tảng mới nhất, thì họ lại phải loanh quanh đi tìm cách sửa lỗi để
phần mềm của mình hoạt động ổn định trên tất cả các phiên bản. Và hãy nhìn bức
tranh tổng thể để thấy được tính nghiêm trọng của sự việc: Nếu đến tận khi Android ra
phiên bản 2.5 2.6 mà bạn vẫn bị "kẹt" ở phiên bản 2.2, đồng nghĩa với việc bạn phải
chấp nhận một chiếc smartphone chậm chạp, thiếu tính năng.

Google cũng rất dễ dãi trong việc quản lý mã nguồn của mình. Sự dễ dãi này khiến
việc sản xuất 1 smartphone chạy Android trở nên dễ dàng và cực rẻ nhưng đồng thời
nó cũng làm cho sự phát triển của Android càng lúc càng...lung tung. Ở một thị trường
không trọng điểm như Việt Nam, điều này thể hiện không rõ rệt lắm, nhưng thử nhìn
như ở Mỹ, ngoài Android Market còn có đến 3,4 "chợ ứng dụng" khác song song hoạt
động. Mới đây nhất Amazon cũng cho ra đời "chợ ứng dụng" của mình. Sự phân mảng
18


trong cơ cấu phân phối ứng dụng khiến cho người sử dụng gặp nhiều khó khăn. Thay
vì tìm mua tất cả những ứng dụng bạn cần ở 1 nơi như cách mà người sử dụng iOS có
thể làm. Người sử dụng Android có thể sẽ mất rất nhiều công tìm kiếm ứng dụng mà
mình cần.

2.5.4 Sự cạnh tranh từ các hệ điều hành khác
Bên cạnh iOS từ Apple cho các thiết bị di động, giờ đây Android cũng đang phải
đối mặt sự cạnh tranh đến từ WindowPhone của Microsoft. Sự phân mảnh của
Android cũng là một trong những lý do khiến các nhà sản xuất thiết bị di động dần
chuyển hướng sang các hệ điều hành khác. Thách thức này yêu cầu Android phải có sự
chuẩn hóa trong sự phát triển tiếp theo, không chỉ chuẩn hóa phần cứng mà phải chuẩn
hóa cả phiên bản phát triển sau này để cho nhà sản xuất và người dùng hệ điều hành
này có thể tiếp tục sử dụng hiệu quả các thiết bị trên nền tảng Android
2.6 Chu kỳ ứng dụng Android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng dụng
khi mã lệnh cần được chạy và sẽ còn chạy cho đến khi:
 Nó không phụ thuộc
 Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến
trình ứng dụng không được điều khiển trực tiếp bới chính nó. Thay vào đó, nó được
xác định bởi hệ thống qua một kết hợp của:

 Những phần của ứng dụng mà hệ thống biết đang chạy
 Những phần quan trọng như thế nào đối với người dùng
 Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống
2.6.1 Chu kỳ sống thành phần
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu
khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi lúc chúng có thể là active hoặc
inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible.

19


Hình 1. 3 chu kỳ sống của ứng dụng
2.6.2 Activity Stack
Bên trong hệ thống các activity được quản lý như một activity stack. Khi một
Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đang chạy
activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trình activity
mới tồn tại.
Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trở
thành active.

Hình 1. 4. Activity Stack
2.6.3 Các trạng thái của chu kỳ sống

20


×