SlideShare a Scribd company logo
CẤU TRÚC ANDROID
Hệ điều hành Android là một tập hợp của các thành phần phần mềm được chia thành 5
phần và 4 lớp chính:
1. Linux Kerenl
Linux Kernel là lớp thấp nhất. Nó cung cấp các chức năng cơ bản như quản lý tiến
trình, quản lý bộ nhớ, quản lý thiết bị như: Camera, bàn phím, màn hình,… Ngoài ra, nó còn
quản lý mạng, driver của các thiết bị, điều này gỡ bỏ sự khó khăn về giao tiếp với các thiết bị
ngoại vi.
2. Libraries
Phía trên Linux Kernel là tập hợp các bộ thư viện mã nguồn mở WebKit, bộ thư viện
nổi tiến libc, cơ sở dữ liệu SQLite hữu ích cho việc lưu trữ và chia sẻ dữ liệu, bộ thư viện thể
phát, ghi âm về âm thanh, hoặc video. Thư viện SSL chịu trách nhiệm cho bảo mật Internet.
Android cung cấp một số các APIs cho phát triển ứng dụng. Danh sách các API cơ bản
sau được cung cấp bởi tất cả các thiết bị trên nền Android:
- android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các lớp quản lý
(List, Stack…) lớp xử lý chuỗi, lớp xử lý XML
- android.os Gói hệ điều hành cung cấp truy cập đến các dịch vụ cơ bản như là chuyển
tin nhắn, thông tin chéo, đồng hồ và gỡ lỗi.
- android.graphics Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng đồ họa,
màu, vẽ cơ bản.
- android.text Công cụ hiển thị và xử lý văn bản
- android.database Cung cấp các lớp mức thất bắt buộc cho việc điều khiển cursor khi
làm việc với các cơ sở dữ liệu
- android.content Các giao tiếp lập trình nội dung được dùng để quản lý truy cập dữ
liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên, Content Provider, và
các gói
- android.view là lớp giao diện người dùng cơ bản nhất. Tất cả giao diện người dùng
được tạo ra đều phải sử dụng một tập các View để cung cấp cho các thành phần tương tác
người dùng.
- android.widget Xây dựng dựa trên gói View. Những lớp Widget những thành phần
giao diện được tạo sẵn được sử dụng để tạo nên giao diện người dùng. Các Widget bao gồm
danh sách, nút bấm, hộp nhập, các kiểu trình bày(layout)
- com.google.android.maps bộ API mức cao cung cấp truy cập đến điều khiển bản đồ
sẵn trong Android từ ứng dụng được xây dựng. Bao gồm cả lớp MapView cũng như Overlay
và MapController để tương tác với bản đồ bên trong ứng dụng.
- android.app Một gói thư viện bậc cao, cung cấp truy cập đến dữ liệu của ứng dụng.
Gói ứng dụng cũng bao gồm lớp Activity và Service là thành phần cơ bản của mọi ứng dụng
Android.
- Android.provider Để tạo thuận lợi cho người phát triển truy cập đến các Content
Provider tiêu chuẩn(như là dữ liệu danh bạ), gói Cung cấp(Provider) bao gồm các lớp cho
phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản phân phối Android.
- Android.telephony Các API điện đàm cung cấp khả năng tương tác trực tiếp với tầng
điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi, tình trạng các cuộc gọi
và tin nhắn SMS.
- android.webkit Gói WebKit cung cấp các API để làm việc với các nội dung Web-
based bao gồm một lơp WebView để tạo ra giao diên web, nhúng trong ứng dụng và một
trình quản lý cookie.
Cùng với các API của Android, còn có một tập các thư viện C/C++ như:
 OpenGL Thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn OpenGLES 1.0
API
 FreeType Hỗ trợ xử lý bitmap và font vector
 GGL Thư viện cơ bản, dùng để cung cấp các engine đồ họa 2D
 Libc Thư viện C chuẩn, được tối ưu cho các thiết bị Linux-based
 SQLite Engine cơ sở dữ liệu quan hệ gọn nhẹ, dùng để lưu trữ dữ liệu của ứng
dụng
 SSL Hỗ trợ sử dụng giao thức mã hóa Secure Sockets Layer trong bảo mật
truyền thông Internet
- Ngoài các thư viện chuẩn của Android, để đáp ứng tiêu chí phù hợp với nhiều thiết bị
khác nhau, Android còn có thể có các API phụ thuộc thiết bị như android.location,
android.media, android.opengl, android.hardware, android.bluetooth, android.net.wifi,
và android.telephony.
3. Android Runtime
Đây là thành phần thứ 3 trong cấu trúc, thuộc về lớp 2 tính từ dưới lên. Phần này cung
cấp một thành phần quan trọng gọi là Dalvik Virtual Machine là một máy ảo Java đặt biệt,
được thiết kế tối ưu cho Android.
Máy ảo Dalvik sử dụng các tính năng cốt lõi của Linux như quản lý bộ nhớ, đa luồng,
mà thực chất là bên trong ngôn ngữ Java. Máy ảo Dalvik cho phép tất cả các ứng dụng
Android chạy trong tiến trình riêng của nó.
Android Runtime cũng cung cấp bộ thư viện cốt lõi, cho phép các lập trình viên
Android sử dụng để viết các ứng dụng Android.
4. Application Framework
Lớp Application Framework cung cấp nhiều dịch vụ cấp cao hơn cho các ứng dụng
trong các class Java. Các lập trình viên cũng được phép sử dụng các dịch vụ này trong các
ứng dụng của họ.
Kiến trúc của Android khuyến khích khái niệm Thành phần sử dụng lại, cho phép công
bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng khác với quyền truy cập được
quản lý bởi khai báo.
Cơ chế đó cho phép người lập trình tạo ra một trình quản lý danh bạ hoặc trình quay số
điện thoại mà có các thành phần người khác có thể tạo mới giao diện và mở rộng chức năng
thay vì tạo lại chúng.
Những dịch vụ sau là những dịch vụ kiến trúc cơ bản nhất của tất cả các ứng dụng, cung
cấp một framework cho mọi mọi phần mềm được xây dựng:
 Actitvity Manager: Điều khiển vòng đời của các Activity bao gồm cả quản lý các
tầng Activity.
 Views system: Được sử dụng để tạo lập các giao diện người dùng cho các Activity
 Notification Manager: Cung cấp một cơ chế cố định và quy củ cho việc gửi các
thông báo đến người dùng.
 Content Provider: Cho phép ứng dụng chia sẻ dữ liệu giữa các ứng dụng.
 Resource Manager: Hỗ trợ các thành phần không thuộc mã nguồn như là chuỗi ký tự,
đồ họa được đặt bên ngoài.
 Window Manager là một system service, nó chịu trách nhiệm quản lý danh sách các
z-ordered của cửa sổ nhìn thấy, và làm thế nào để nó lại hiện lên màn hình. Nó sẽ tự
động chuyển đổi các cửa sổ và hình ảnh động khi mở, đóng ứng dụng hoặc xoay màn
hình.
 Package Manager là mốt API quản lý cài đặt, gỡ bỏ cài đặt và nâng cấp ứng dụng
 Telephony Manager: Cung cấp truy cập đến thông tin về các dịch vụ điện thoại trên
thiết bị.
 Location Manager: cũng cấp truy cấp vào các dịch vụ định vụ hệ thống. Những dịch
vụ này cho phép các ứng dụng cập nhật định kỳ vị trí địa lý của thiết bị hoặc định vị
một vị trí địa lý xác định.
5. Applications
Đây là lớp trên cùng của kiến trúc nền tảng Android, nơi các ứng dụng được cái đặt.
Android sẽ hoạt động với một bộ các ứng dụng bao gồm ứng dụng thư điện tử, gửi tin nhắn,
lịch, bản đồ, trình duyệt web, danh bạ v.v… Tất cả các ứng dụng được viết bằng ngôn ngữ
Java. Các ứng dụng này có thể được cung cấp sẵn hoặc được phát triển bởi những lập trình
viên.
5.1. Các thành phần của ứng dụng
Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản sau:
 Activity
 Services
 Broadcast receivers
 Content Provider
Các thành phần này không nhất thiết phải có mặt đầy đủ trong ứng dụng. Chúng ta có
thể xem các thành phần nào được sử dụng trong ứng dụng bằng việc xem khai báo trong file
AndroidManifest.xml.
5.1.1. Activity
 Khái niệm
Mỗi activity là một giao diện người dùng trực quan mà người dùng có thể thực hiện trên
đó mỗi khi được kích hoạt. Một ứng dụng có thể có nhiều hoạt động và chúng có thể gọi đến
nhau chuyển giữa các hoạt động với nhau. Mỗi activity là một dẫn xuất của lớp
android.app.Activity.
Mỗi activity có một cửa sổ để vẽ lên. Thông thường cửa sổ này phủ đầy màn
hình, ngoài ra nó cũng có thể có thêm các cửa sổ con khác như là hộp thoại…Nội dung
của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp bậc các View (là đối
tượng của lớp Views).
 Vòng đời của activity
Các activity trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp. Khi có một
hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp, chuyển sang trạng thái thực thi và
hoạt trộng trước đó sẽ chuyển sang trạng thái chờ. Hoạt động này chỉ trở lại trang thái kích
hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực thi.
Một hoạt động có ba trạng thái chủ yếu đó là:
Một activity có 3 trạng thái chính:
 Active hoặc running khi nó ở trên nhất màn hình và nhận tương tác người dùng
 Paused khi Activity không còn là trọng tâm trên màn hình nhưng vẫn hiện thị
trước người dùng.
 Stopped khi một activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái
Stopped. Tuy nhiên, nó vẫn còn lưu trữ toàn bộ thông tin trạng thái. Và nó
thường bị hệ thống đóng lại khi có tình trạng thiếu bộ nhớ.
Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng với các bước
chuyển:
 void onCreate(Bundle savedInstanceState)
 void onStart()
 void onRestart()
 void onResume()
 void onPause()
 void onStop()
 void onDestroy()
Biểu đồ sau mô tả trạng thái trong vòng đời của một activity.
Vòng đời của một hoạt động có thể được thể hiện trong những quá trình sau:
 Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới phương
thức onCreate (Bundle) tới lời gọi phương thức onDestroy(). Trong quá trình
này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong
phương thức onCreate() và giải phóng chúng khi phương thức onDestroy()
được thực thi.
 Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới phương
thức onStart(), cho tới khi phương thức onStop() của nó được thực thi. Toàn bộ
các tài nguyên đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu giữ,
người dùng có thể thấy giao diện nhưng không tương tác được với hoạt động do
trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh.
 Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi có lời gọi
tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức
onPause(). Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác
với người dùng.
5.1.2. Service
 Khái niệm
Một service là các đoạn mã được thực thi ngầm bời hệ thống mà người sử dụng không
thấy được. Mỗi service để dược mở rộng từ lớp cơ sở là service trong gói android.app. Có
thể kết nối tới hoặc kích hoạt một service thông qua interface mà nó đưa ra. Ví dụ như một
đoạn chương trình chơi nhạc, sẽ có vài hoạt động cho phép người dùng duyệt danh sách các
bài hát và lựa chọn bài nào để phát. Tuy nhiên, chức năng chơi nhạc không được thiết kế như
một hoạt động bởi chúng ta sẽ muốn chuyển qua cửa sổ khác, như khi soạn tin nhắn thì bài
nhạc vẫn tiếp tục được phát. Trong trường hợp này, ứng dụng chơi nhạc sẽ khởi tạo một
service bằng cách sử dụng phương thức conttext.startservice()
Một ứng dụng có thể dễ dàng thực hiện liên kết tới một service đang chạy (thậm chí
khởi động nếu nó chưa thực thi) bằng phương thức Context.bindService(). Khi đó service
này sẽ cung cấp cho ứng dụng cơ chế để giao tiếp với chúng thông qua giao diện gọi là
IBinder (đối với dịch vụ chơi nhạc có thể cho phép dừng hoặc chuyển qua bài nhạc kế tiếp).
 Vòng đời của service
Vòng đời của một service được hiểu là quá trình hoạt động từ khi nó được tạo ra cho tới
khi bị loại khỏi hệ thống. Có hai cách thức để một service có thể được chạy trong hệ thống:
 Khi hệ thống có lời gọi tới phương thức Context.startService(). Trong trường
hợp này, service sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức
Context.stopService().
 Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với
service (service sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt
động). Ứng dụng sẽ nhận được một đối tượng IBinder do service trả lại để có
thể gọi các phương thức Callback phù hợp để truy cập tới các trạng thái của
service. Nếu do lời gọi Context.bindService() mà service được khởi tạo thì nó
sẽ được thực thi cho tới khi nào kết nối trên (tức là đối tượng IBinder) vẫn còn
tồn tại.
5.1.3. Broadcast receivers
Broadcast receivers là một thành phần không làm gì cả nhưng nó nhận và phản hồi lại
các thông báo quảng bá. Nhiều quảng bá có nguồn gốc từ mã hệ thống, ví dụ thông báo thay
đổi múi giờ, pin yếu, ảnh đã chụp hay thay đổi ngôn ngữ. Các ứng dụng có thể khởi động
quảng bá, ví dụ để các ứng dụng khác biết rằng dữ liệu đã được tải về xong trên thiết bị và sẵn
sàng sử dụng.
Một ứng dụng có thể có bất kỳ số lượng Broadcast receivers nào để nhận những thông
báo quan trọng với nó. Tất cả các Broadcast receivers được kế thừa từ lớp
BroadcastReceiver.
Broadcast receivers không có giao diện. Tuy nhiên, chúng có thể khởi động một hoạt
động để đáp lại thông tin mà nó nhận được, hay chúng có thể sử dụng NotificationManager
để thông báo người dùng biết. Các thông báo có thể được sự chú ý của người dùng theo các
cách các nhau như là sáng màn hình, rung thiết bị, bật âm thanh nào đấy… Thông thường,
chúng đặt thông báo trên thanh trạng thái, nơi người dùng có thể nhận được thông báo.
5.1.4. Content provider
Các ứng dụng có thể lưu trữ dữ liệu của mình trong các tập tin hoặc sử dụng cơ sở dữ
liệu SQLite sẵn có v.v… Content Provider có chức năng cung cấp một tập hợp các phương
thức cho phép một ứng dụng có thể lưu trữ và lấy dữ liệu được quản lý bởi content provider
đó.
Content Provider là một đặc trưng riêng của Android, nhờ đó mà các ứng dụng có thể
chia sẻ dữ liệu với nhau một cách dễ dàng.
5.1.5. Tập tin khai báo (manifest)
Trước khi có thể khởi chạy một ứng dụng thành phần, nó phải xem ứng dụng bao gồm
những thành phần nào. Thêm nữa, các ứng dụng khai báo các thành phần của nó trong một tập
tin khai báo để đóng gói lại vào trong gói Android (tập tin .apk chứa các mã nguồn, tập tin và
tài nguyên).
Tập tin này có cấu trúc của tập tin XML và luôn có tên là AndroidManifest.xml trong
mọi ứng dụng. Nó làm một số thứ như thêm và khai báo các thành phần của ứng dụng, tên các
thư viện ứng dụng cần liên kết tới (ngoài thư viện chuẩn của Android) và xác định các quyền
cho ứng dụng.
Tuy nhiên, nhiệm vụ chính của tập tin khai báo là khai báo các thành phần của ứng
dụng. Một hoạt động có thể được khai báo như sau:
Thuộc tính “name” của phần tử <activity> là tên các lớp con lớp Activity đã được cài
đặt, thuộc tính “icon” và “label” trỏ đến tập tin tài nguyên chứa biểu tượng và nhãn được hiển
thị cho người dùng.
Các thành phần khác được khai báo theo cách tương tự: <service> dịch vụ, <receiver>
bộ nhận quảng bá và <provider> content provider. Các hoạt động, dịch vụ và content
provider có thể cùng được khai báo trong tập tin khai báo hoặc có thể được tạo tự động trong
mã (như đối tượng BroadcastReceiver) và được đăng ký với hệ thống bằng cách gọi
Context.registerReceiver().
5.1.6. Intent
Khi Tim Berners phát minh ra giao thức Hypertext Transfer Protocol (HTTP), ông cũng
đã phát minh ra một định dạng URLs chuẩn. Định dạng này là một hệ thống các động từ đi
kèm các địa chỉ. Địa chỉ sẽ xác định nguồn tài nguyên như Web page, hình ảnh hay các
server-side program. Động từ sẽ xác định cần phải làm cái gì với nguồn tài nguyên đó: GET
để nhận dữ liệu về, POST để đưa dữ liệu cho nó để thực thi một công việc nào đó. Khái niệm
Intent cũng tương tự, Intent là một mô tả trừu tượng của một hành động được thực thi. Nó
đại diện cho một hành động đi kèm với một ngữ cảnh xác định. Với Intent thì có nhiều hành
động và nhiều component (Một thể hiện của một class java dùng để thực thi các hành động
được đặc tả trong Intent) dành cho Intent của Android hơn là so với HTTP verbs (POST,
GET) và nguồn tài nguyên (hình ảnh, web page) của giao thức HTTP, tuy nhiên khái niệm
vẫn tương tự nhau.
Intent được sử dụng với phương thức startActivity() để mở một Activity, và dùng với
broadcastIntent để gởi nó đến bất kì BroadcastReceiver liên quan nào, và dùng với
startService(Intent), bindService(Intent, ServiceConnection, int) để giao tiếp với các
Service chạy dưới nền.
<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
<application . . . >
<activity android:name="com.example.project.FreneticActivity"
android:icon="@drawable/small_pic.png"
android:label="@string/freneticLabel"
. . . >
</activity>
. . .
</application>
</manifest>
Intent cung cấp một chức năng cho phép kết nối hai chương trình khác nhau trong quá
trình thực thi (runtime) (Cung cấp khả năng cho phép hai chương trình khác nhau giao tiếp
với nhau). Chức năng quan trọng và được sử dụng nhiều nhất của một Intent là mở một
Activity, nơi mà nó có thể được dùng như một vật kết nối các Activity lại với nhau (Truyền
thông tin giữa hai Activity khác nhau).
Thành phần chính của Intent bao gồm:
Action: Xác định hành động sẽ được thực thi, các hành động này có thể là:
ACTION_VIEW, ACTION_EDIT, ACTION_MAIN…
Data: Các dữ liệu được sử dụng để hành động (Action) thao tác trên nó, như bản ghi về
một người nào đó trong cơ sở dữ liệu chứa các contact của thiết bị.
Ví dụ về thành phần action/data:
ACTION_VIEW content://contacts/people/1 – hiển thị thông tin liên lạc của người có
mã là “1”.
ACTION_DIAL content://contacts/people/1 – gọi điện cho người có mã là “1”.
ACTION_DIAL tel:123 – gọi đến số điện thoại “123”
Ngoài ra, Intent còn có các thuộc tính phụ sau:
Category: thông tin chi tiết về hành động được thực thi, ví dụ như
CATEGORY_LAUNCHER có nghĩa là nó sẽ xuất hiện trong Launcher như ứng dụng có
mức level cao (top-level application), trong khi CATEGORY_ALTERNATIVE chứa thông
tin danh sách các hành động thay thế mà người dùng có thể thực thi trên phần dữ liệu mà
Intent cung cấp.
Type: Chỉ định 1 kiểu dữ liệu chính xác (kiểu MIME) được mang bởi intent. Thường
thì type được suy ra từ chính dữ liệu. Bằng cách thiết lập thuộc tính type, bạn có thể vô hiệu
hóa sự phỏng đoán kiểu dữ liệu và chỉ định rỏ một kiểu chính xác.
Component: Chỉ định rõ tên của lớp thành phần (Một thể hiện của một class java dùng
để thực thi các hành động được đặc tả trong Intent) sử dụng cho Intent . Thông thường thì nó
được xác định bằng cách tìm kiếm thông tin trong Intent (Các thông tin như Action,
data/type, và category) và nối chúng với các component (Một thể hiện của một Class java
dùng để thực thi các hành động được đặc tả trong Intent) có thể đáp ứng được các yêu cầu sử
lý của Intent.
Extracts: là một đối tượng Bundle dùng để chứa các thông tin kèm theo được dùng để
cung cấp thông tin cần thiết cho component. Ví dụ: Nếu có một Intent đặc tả hành động send
email thì những thông tin cần chứa trong đối tượng Bundle là subject, body…
Intent Resolution
Intent có 2 dạng chính sau:
Explicit Intents: Xác định rõ một component (Một thể hiện của một class java dùng để
thực thi các hành động được đặc tả trong Intent) (thông qua phương thức
setComponent(ComponentName) hoặc setClass(Context, Class)) cung cấp lớp sẽ thực thi
các hành động được đặc tả trong Intent. Thông thường thì những Intent này không chứa bất
kỳ thông tin nào khác (như category, type) mà đơn giản chỉ là cách để ứng dụng mở các
Activity khác bên trong một Activity.
Implicit Intents: Không chỉ định một component nào cả, thay vào đó, chúng sẽ chứa
đủ thông tin để hệ thống có thể xác định component có sẵn nào là tốt nhất để thực thi hiệu
quả cho Intent đó.
Khi sử dụng Implicit intents, do tính chất chuyên quyền của loại Intent này,ta cần phải
biết phải làm gì với nó. Công việc này được đảm nhiệm bởi tiến trình của Intent resolution,
nó giúp chỉ định Intent đến một Actvity,
BroadcastReceiver, hoặc Service (hoặc thỉnh thoảng có thể là 2 hay nhiều hơn một
activity/receiver) để có thể xử lý các hành động được đặc tả trong Intent.
Bất cứ thành phần nào (Activity, BroadcastReceiver, Service) khi muốn sử dụng trong
ứng dụng đều phải được đăng kí trong file AndroidManifest.xml. Trong đó cầnđịnh nghĩa
một thẻ <intent-fillter> cung cấp các thông tin để hệ thống có thể xác định được cái mà các
component này (Activity, BroadcastReceiver, Service) có thể xử lý được (những action mà
component này có thể thực hiện được).
Intent Fillter là bản đặc tả có cấu trúc của các giá trị của Intent dùng để xác định
component phù hợp để thực hiệncác hành động được đặc tả trong Intent. Một Intent Fillter
nối các hành động, categories và dữ liệu (hoặc thông qua type hoặc sheme) trong Intent.
Intent Fillter được khai báo trong AndroidManifest.xml và sử dụng thẻ intent-fillter.
Một Intent Fillter có các thành phần chính sau:
Action: Tên hành động mà component có thể thực thi.
Type:Kiểu hành động mà component có thể thực thi.
Category: Phân nhóm các hành động.
Đối với những dữ liệu không phải là nội dung cụ thể (VD: URI) thì việc xem xét lựa
chọn Intent phù hợp sẽ dựa vào lược đồ(Scheme) của dữ liệu được cung cấp (VD: http://
mailto: …)
Luật xác định component phù hợp Intent
Để xác định một thành phần là phù hợp với một Intent hệ thống sẽ tiến hành xem xét từ
trên xuống.
Trước tiên khi một Intent được gọi, Android sẽ tìm kiếm những component (Activity,
BroadcastReceiver, Service) có action-name phù hợp với Intent.
Nếu có component phù hợp Android sẽ mở component đó lên để thực thi các hành
động theo yêu cầu.
Nếu có nhiều hơn 1 component có action-name phù hợp thì Android sẽ yêu cầu người
dùng chọn component phù hợp.
Ngược lại nếu không có component nào phù hợp Android sẽ tiến hành xem xét kiểu dự
liệu của Intent cung cấp xem có component nào có đủ năng lực để sử lý kiểu dữ liệu đó
không. Nếu không được Android sẽ tiến hành xem xét scheme của dữ liệu đó để tìm kiếm
component phù hợp. Nếu vẫn không tìm được component phù hợp Android sẽ tiến hành xem
xét các component có chung Category với Intent để xác định component.
6. Giao tiếp giữa các tầng
http://expressmagazine.net/development/1311/cac-thanh-phan-co-ban-cua-mot-ung-
dung-android#sthash.qhLUG06s.dpuf

More Related Content

What's hot

Tìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidPhuong Ngo
 
Bài giảng thiết kế website - truongkinhtethucpham.com
Bài giảng thiết kế website - truongkinhtethucpham.comBài giảng thiết kế website - truongkinhtethucpham.com
Bài giảng thiết kế website - truongkinhtethucpham.com
mai_non
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyến
trương dũng
 
Bài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNGBài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNGMasterCode.vn
 
Module 6: Sử Dụng Internet Cơ Bản
Module 6: Sử Dụng Internet Cơ BảnModule 6: Sử Dụng Internet Cơ Bản
Module 6: Sử Dụng Internet Cơ Bản
Long Nguyen
 
Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tính
Hoài Phạm
 
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOTĐề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Slide he dieu hanh
Slide he dieu hanhSlide he dieu hanh
Slide he dieu hanh
Phan Duy
 
Hệ điều hành (chương 1)
Hệ điều hành (chương 1)Hệ điều hành (chương 1)
Hệ điều hành (chương 1)realpotter
 
IC3 GS4: Phần Cứng Máy Tính
IC3 GS4: Phần Cứng Máy TínhIC3 GS4: Phần Cứng Máy Tính
IC3 GS4: Phần Cứng Máy Tính
Dũng Nguyễn Văn
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánNgo Trung
 
Presentation điện toán đám mây
Presentation   điện toán đám mâyPresentation   điện toán đám mây
Presentation điện toán đám mâyxKinAnx
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
leemindinh
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
MasterCode.vn
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
Nguyễn Anh
 
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupBáo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Tinh Ngo
 
Do an tot nghiep _ Nguyen Huu Bien
Do an tot nghiep _ Nguyen Huu BienDo an tot nghiep _ Nguyen Huu Bien
Do an tot nghiep _ Nguyen Huu Bien
nhbien
 
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền androidĐồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
laonap166
 
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online  MớiSlide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online  Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Hiệu Nguyễn
 
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online MớiSlide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Hiệu Nguyễn
 

What's hot (20)

Tìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành android
 
Bài giảng thiết kế website - truongkinhtethucpham.com
Bài giảng thiết kế website - truongkinhtethucpham.comBài giảng thiết kế website - truongkinhtethucpham.com
Bài giảng thiết kế website - truongkinhtethucpham.com
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyến
 
Bài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNGBài 5 PHẦN MỀM HỆ THỐNG
Bài 5 PHẦN MỀM HỆ THỐNG
 
Module 6: Sử Dụng Internet Cơ Bản
Module 6: Sử Dụng Internet Cơ BảnModule 6: Sử Dụng Internet Cơ Bản
Module 6: Sử Dụng Internet Cơ Bản
 
Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tính
 
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOTĐề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
Đề tài: Xây dựng website giới thiệu sản phẩm phần mềm, HOT
 
Slide he dieu hanh
Slide he dieu hanhSlide he dieu hanh
Slide he dieu hanh
 
Hệ điều hành (chương 1)
Hệ điều hành (chương 1)Hệ điều hành (chương 1)
Hệ điều hành (chương 1)
 
IC3 GS4: Phần Cứng Máy Tính
IC3 GS4: Phần Cứng Máy TínhIC3 GS4: Phần Cứng Máy Tính
IC3 GS4: Phần Cứng Máy Tính
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
 
Presentation điện toán đám mây
Presentation   điện toán đám mâyPresentation   điện toán đám mây
Presentation điện toán đám mây
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
 
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupBáo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
 
Do an tot nghiep _ Nguyen Huu Bien
Do an tot nghiep _ Nguyen Huu BienDo an tot nghiep _ Nguyen Huu Bien
Do an tot nghiep _ Nguyen Huu Bien
 
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền androidĐồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
Đồ án tốt nghiệp Xây dựng ứng dụng fastfood trên nền android
 
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online  MớiSlide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online  Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
 
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online MớiSlide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
Slide Đồ Án Tốt Nghiệp Khoa CNTT Web Xem Phim Online Mới
 

Similar to Cấu trúc android

Giới thiệu Android- Bài 2
Giới thiệu Android- Bài 2Giới thiệu Android- Bài 2
Giới thiệu Android- Bài 2hoccungdoanhnghiep
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake php
laonap166
 
Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31
Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31
Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31thequocbk
 
bao cao athena tuan 1
bao cao athena tuan 1bao cao athena tuan 1
bao cao athena tuan 1
Võ Thành Đạt
 
Lap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclipLap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclip
ktvinh
 
Báo cáo thực tập cơ sở
Báo cáo thực tập cơ sởBáo cáo thực tập cơ sở
Báo cáo thực tập cơ sở
Nguyễn Phú
 
Mau slide
Mau slideMau slide
Mau slide
Donhu Quang
 
Silverlight chapter 1
Silverlight chapter 1Silverlight chapter 1
Silverlight chapter 1
hthuyet
 
Bài giảng kỹ thuật lập trình hook
Bài giảng kỹ thuật lập trình hookBài giảng kỹ thuật lập trình hook
Bài giảng kỹ thuật lập trình hook
jackjohn45
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
vvpcdsptin
 
Giao trinh asp.ne_tvoi_csharp
Giao trinh asp.ne_tvoi_csharpGiao trinh asp.ne_tvoi_csharp
Giao trinh asp.ne_tvoi_csharpngohanty13
 
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênGiáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênTrần Thiên Đại
 
1 gioithieuveandroidsdk-150322215607-conversion-gate01
1 gioithieuveandroidsdk-150322215607-conversion-gate011 gioithieuveandroidsdk-150322215607-conversion-gate01
1 gioithieuveandroidsdk-150322215607-conversion-gate01
Lê Phú Thảo
 
Slide bài giảng lập trình Android DTU - Phần 1
Slide bài giảng lập trình Android DTU - Phần 1Slide bài giảng lập trình Android DTU - Phần 1
Slide bài giảng lập trình Android DTU - Phần 1
Techacademy Software
 
Giáo trình asp.net với c sharp
Giáo trình asp.net với c sharpGiáo trình asp.net với c sharp
Giáo trình asp.net với c sharp
Trần Văn Sáng Trần
 
Báo cáo tuần 1
Báo cáo tuần 1Báo cáo tuần 1
Báo cáo tuần 1ThongErik
 

Similar to Cấu trúc android (20)

Giới thiệu Android- Bài 2
Giới thiệu Android- Bài 2Giới thiệu Android- Bài 2
Giới thiệu Android- Bài 2
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake php
 
Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31
Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31
Tim hieu lap_trinh_android_va_tu_xay_dung_ung_dung_minh_hoa_20120809043144_31
 
bao cao athena tuan 1
bao cao athena tuan 1bao cao athena tuan 1
bao cao athena tuan 1
 
Lap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclipLap trinh android_co_ban_eclip
Lap trinh android_co_ban_eclip
 
Báo cáo thực tập cơ sở
Báo cáo thực tập cơ sởBáo cáo thực tập cơ sở
Báo cáo thực tập cơ sở
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 
Mau slide
Mau slideMau slide
Mau slide
 
Chuong 1
Chuong 1Chuong 1
Chuong 1
 
Silverlight chapter 1
Silverlight chapter 1Silverlight chapter 1
Silverlight chapter 1
 
Clear case
Clear caseClear case
Clear case
 
Bài giảng kỹ thuật lập trình hook
Bài giảng kỹ thuật lập trình hookBài giảng kỹ thuật lập trình hook
Bài giảng kỹ thuật lập trình hook
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 
Giao trinh asp.ne_tvoi_csharp
Giao trinh asp.ne_tvoi_csharpGiao trinh asp.ne_tvoi_csharp
Giao trinh asp.ne_tvoi_csharp
 
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng YênGiáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
Giáo trình java Đại Học Sư Phạm Kỹ Thuật Hưng Yên
 
1 gioithieuveandroidsdk-150322215607-conversion-gate01
1 gioithieuveandroidsdk-150322215607-conversion-gate011 gioithieuveandroidsdk-150322215607-conversion-gate01
1 gioithieuveandroidsdk-150322215607-conversion-gate01
 
Slide bài giảng lập trình Android DTU - Phần 1
Slide bài giảng lập trình Android DTU - Phần 1Slide bài giảng lập trình Android DTU - Phần 1
Slide bài giảng lập trình Android DTU - Phần 1
 
Giáo trình asp.net với c sharp
Giáo trình asp.net với c sharpGiáo trình asp.net với c sharp
Giáo trình asp.net với c sharp
 
Báo cáo tuần 1
Báo cáo tuần 1Báo cáo tuần 1
Báo cáo tuần 1
 
Asp.net 3.5 _1
Asp.net 3.5 _1Asp.net 3.5 _1
Asp.net 3.5 _1
 

Recently uploaded

30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
ngocnguyensp1
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
Nguyen Thanh Tu Collection
 
DS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdf
DS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdfDS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdf
DS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdf
thanhluan21
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
Điện Lạnh Bách Khoa Hà Nội
 
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
https://www.facebook.com/garmentspace
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
chinhkt50
 
Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...
Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...
Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...
Nguyen Thanh Tu Collection
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
Nguyen Thanh Tu Collection
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
phamthuhoai20102005
 
GIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdf
GIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdfGIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdf
GIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdf
LngHu10
 
CÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptx
CÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptxCÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptx
CÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptx
CNGTRC3
 

Recently uploaded (11)

30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
30 - ĐỀ THI HSG - HÓA HỌC 9 - NĂM HỌC 2021 - 2022.pdf
 
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
98 BÀI LUYỆN NGHE TUYỂN SINH VÀO LỚP 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ ...
 
DS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdf
DS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdfDS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdf
DS thi KTHP HK2 (dot 3) nam hoc 2023-2024.pdf
 
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdfGIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
GIÁO TRÌNH 2-TÀI LIỆU SỬA CHỮA BOARD MONO TỦ LẠNH MÁY GIẶT ĐIỀU HÒA.pdf
 
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
Khoá luận tốt nghiệp ngành Truyền thông đa phương tiện Xây dựng kế hoạch truy...
 
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nayẢnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
Ảnh hưởng của nhân sinh quan Phật giáo đến đời sống tinh thần Việt Nam hiện nay
 
Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...
Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...
Nghiên cứu cơ chế và động học phản ứng giữa hợp chất Aniline (C6H5NH2) với gố...
 
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIỎI KHOA HỌC TỰ NHIÊN 9 CHƯƠNG TRÌNH MỚI - PHẦN...
 
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdfBAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
BAI TAP ON HE LOP 2 LEN 3 MON TIENG VIET.pdf
 
GIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdf
GIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdfGIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdf
GIAO TRINH TRIET HOC MAC - LENIN (Quoc gia).pdf
 
CÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptx
CÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptxCÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptx
CÁC BIỆN PHÁP KỸ THUẬT AN TOÀN KHI XÃY RA HỎA HOẠN TRONG.pptx
 

Cấu trúc android

  • 1. CẤU TRÚC ANDROID Hệ điều hành Android là một tập hợp của các thành phần phần mềm được chia thành 5 phần và 4 lớp chính: 1. Linux Kerenl Linux Kernel là lớp thấp nhất. Nó cung cấp các chức năng cơ bản như quản lý tiến trình, quản lý bộ nhớ, quản lý thiết bị như: Camera, bàn phím, màn hình,… Ngoài ra, nó còn quản lý mạng, driver của các thiết bị, điều này gỡ bỏ sự khó khăn về giao tiếp với các thiết bị ngoại vi. 2. Libraries Phía trên Linux Kernel là tập hợp các bộ thư viện mã nguồn mở WebKit, bộ thư viện nổi tiến libc, cơ sở dữ liệu SQLite hữu ích cho việc lưu trữ và chia sẻ dữ liệu, bộ thư viện thể phát, ghi âm về âm thanh, hoặc video. Thư viện SSL chịu trách nhiệm cho bảo mật Internet. Android cung cấp một số các APIs cho phát triển ứng dụng. Danh sách các API cơ bản sau được cung cấp bởi tất cả các thiết bị trên nền Android:
  • 2. - android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các lớp quản lý (List, Stack…) lớp xử lý chuỗi, lớp xử lý XML - android.os Gói hệ điều hành cung cấp truy cập đến các dịch vụ cơ bản như là chuyển tin nhắn, thông tin chéo, đồng hồ và gỡ lỗi. - android.graphics Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng đồ họa, màu, vẽ cơ bản. - android.text Công cụ hiển thị và xử lý văn bản - android.database Cung cấp các lớp mức thất bắt buộc cho việc điều khiển cursor khi làm việc với các cơ sở dữ liệu - android.content Các giao tiếp lập trình nội dung được dùng để quản lý truy cập dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên, Content Provider, và các gói - android.view là lớp giao diện người dùng cơ bản nhất. Tất cả giao diện người dùng được tạo ra đều phải sử dụng một tập các View để cung cấp cho các thành phần tương tác người dùng. - android.widget Xây dựng dựa trên gói View. Những lớp Widget những thành phần giao diện được tạo sẵn được sử dụng để tạo nên giao diện người dùng. Các Widget bao gồm danh sách, nút bấm, hộp nhập, các kiểu trình bày(layout) - com.google.android.maps bộ API mức cao cung cấp truy cập đến điều khiển bản đồ sẵn trong Android từ ứng dụng được xây dựng. Bao gồm cả lớp MapView cũng như Overlay và MapController để tương tác với bản đồ bên trong ứng dụng. - android.app Một gói thư viện bậc cao, cung cấp truy cập đến dữ liệu của ứng dụng. Gói ứng dụng cũng bao gồm lớp Activity và Service là thành phần cơ bản của mọi ứng dụng Android. - Android.provider Để tạo thuận lợi cho người phát triển truy cập đến các Content Provider tiêu chuẩn(như là dữ liệu danh bạ), gói Cung cấp(Provider) bao gồm các lớp cho phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản phân phối Android. - Android.telephony Các API điện đàm cung cấp khả năng tương tác trực tiếp với tầng điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi, tình trạng các cuộc gọi và tin nhắn SMS.
  • 3. - android.webkit Gói WebKit cung cấp các API để làm việc với các nội dung Web- based bao gồm một lơp WebView để tạo ra giao diên web, nhúng trong ứng dụng và một trình quản lý cookie. Cùng với các API của Android, còn có một tập các thư viện C/C++ như:  OpenGL Thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn OpenGLES 1.0 API  FreeType Hỗ trợ xử lý bitmap và font vector  GGL Thư viện cơ bản, dùng để cung cấp các engine đồ họa 2D  Libc Thư viện C chuẩn, được tối ưu cho các thiết bị Linux-based  SQLite Engine cơ sở dữ liệu quan hệ gọn nhẹ, dùng để lưu trữ dữ liệu của ứng dụng  SSL Hỗ trợ sử dụng giao thức mã hóa Secure Sockets Layer trong bảo mật truyền thông Internet - Ngoài các thư viện chuẩn của Android, để đáp ứng tiêu chí phù hợp với nhiều thiết bị khác nhau, Android còn có thể có các API phụ thuộc thiết bị như android.location, android.media, android.opengl, android.hardware, android.bluetooth, android.net.wifi, và android.telephony. 3. Android Runtime Đây là thành phần thứ 3 trong cấu trúc, thuộc về lớp 2 tính từ dưới lên. Phần này cung cấp một thành phần quan trọng gọi là Dalvik Virtual Machine là một máy ảo Java đặt biệt, được thiết kế tối ưu cho Android. Máy ảo Dalvik sử dụng các tính năng cốt lõi của Linux như quản lý bộ nhớ, đa luồng, mà thực chất là bên trong ngôn ngữ Java. Máy ảo Dalvik cho phép tất cả các ứng dụng Android chạy trong tiến trình riêng của nó. Android Runtime cũng cung cấp bộ thư viện cốt lõi, cho phép các lập trình viên Android sử dụng để viết các ứng dụng Android.
  • 4. 4. Application Framework Lớp Application Framework cung cấp nhiều dịch vụ cấp cao hơn cho các ứng dụng trong các class Java. Các lập trình viên cũng được phép sử dụng các dịch vụ này trong các ứng dụng của họ. Kiến trúc của Android khuyến khích khái niệm Thành phần sử dụng lại, cho phép công bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng khác với quyền truy cập được quản lý bởi khai báo. Cơ chế đó cho phép người lập trình tạo ra một trình quản lý danh bạ hoặc trình quay số điện thoại mà có các thành phần người khác có thể tạo mới giao diện và mở rộng chức năng thay vì tạo lại chúng. Những dịch vụ sau là những dịch vụ kiến trúc cơ bản nhất của tất cả các ứng dụng, cung cấp một framework cho mọi mọi phần mềm được xây dựng:  Actitvity Manager: Điều khiển vòng đời của các Activity bao gồm cả quản lý các tầng Activity.  Views system: Được sử dụng để tạo lập các giao diện người dùng cho các Activity  Notification Manager: Cung cấp một cơ chế cố định và quy củ cho việc gửi các thông báo đến người dùng.  Content Provider: Cho phép ứng dụng chia sẻ dữ liệu giữa các ứng dụng.  Resource Manager: Hỗ trợ các thành phần không thuộc mã nguồn như là chuỗi ký tự, đồ họa được đặt bên ngoài.  Window Manager là một system service, nó chịu trách nhiệm quản lý danh sách các z-ordered của cửa sổ nhìn thấy, và làm thế nào để nó lại hiện lên màn hình. Nó sẽ tự động chuyển đổi các cửa sổ và hình ảnh động khi mở, đóng ứng dụng hoặc xoay màn hình.  Package Manager là mốt API quản lý cài đặt, gỡ bỏ cài đặt và nâng cấp ứng dụng  Telephony Manager: Cung cấp truy cập đến thông tin về các dịch vụ điện thoại trên thiết bị.
  • 5.  Location Manager: cũng cấp truy cấp vào các dịch vụ định vụ hệ thống. Những dịch vụ này cho phép các ứng dụng cập nhật định kỳ vị trí địa lý của thiết bị hoặc định vị một vị trí địa lý xác định. 5. Applications Đây là lớp trên cùng của kiến trúc nền tảng Android, nơi các ứng dụng được cái đặt. Android sẽ hoạt động với một bộ các ứng dụng bao gồm ứng dụng thư điện tử, gửi tin nhắn, lịch, bản đồ, trình duyệt web, danh bạ v.v… Tất cả các ứng dụng được viết bằng ngôn ngữ Java. Các ứng dụng này có thể được cung cấp sẵn hoặc được phát triển bởi những lập trình viên. 5.1. Các thành phần của ứng dụng Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản sau:  Activity  Services  Broadcast receivers  Content Provider Các thành phần này không nhất thiết phải có mặt đầy đủ trong ứng dụng. Chúng ta có thể xem các thành phần nào được sử dụng trong ứng dụng bằng việc xem khai báo trong file AndroidManifest.xml. 5.1.1. Activity  Khái niệm Mỗi activity là một giao diện người dùng trực quan mà người dùng có thể thực hiện trên đó mỗi khi được kích hoạt. Một ứng dụng có thể có nhiều hoạt động và chúng có thể gọi đến nhau chuyển giữa các hoạt động với nhau. Mỗi activity là một dẫn xuất của lớp android.app.Activity. Mỗi activity có một cửa sổ để vẽ lên. Thông thường cửa sổ này phủ đầy màn hình, ngoài ra nó cũng có thể có thêm các cửa sổ con khác như là hộp thoại…Nội dung
  • 6. của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp bậc các View (là đối tượng của lớp Views).  Vòng đời của activity Các activity trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp. Khi có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp, chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ. Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực thi. Một hoạt động có ba trạng thái chủ yếu đó là: Một activity có 3 trạng thái chính:  Active hoặc running khi nó ở trên nhất màn hình và nhận tương tác người dùng  Paused khi Activity không còn là trọng tâm trên màn hình nhưng vẫn hiện thị trước người dùng.  Stopped khi một activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái Stopped. Tuy nhiên, nó vẫn còn lưu trữ toàn bộ thông tin trạng thái. Và nó thường bị hệ thống đóng lại khi có tình trạng thiếu bộ nhớ. Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng với các bước chuyển:  void onCreate(Bundle savedInstanceState)  void onStart()  void onRestart()  void onResume()  void onPause()  void onStop()  void onDestroy()
  • 7. Biểu đồ sau mô tả trạng thái trong vòng đời của một activity. Vòng đời của một hoạt động có thể được thể hiện trong những quá trình sau:  Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới phương thức onCreate (Bundle) tới lời gọi phương thức onDestroy(). Trong quá trình này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong
  • 8. phương thức onCreate() và giải phóng chúng khi phương thức onDestroy() được thực thi.  Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới phương thức onStart(), cho tới khi phương thức onStop() của nó được thực thi. Toàn bộ các tài nguyên đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu giữ, người dùng có thể thấy giao diện nhưng không tương tác được với hoạt động do trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh.  Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi có lời gọi tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức onPause(). Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác với người dùng. 5.1.2. Service  Khái niệm Một service là các đoạn mã được thực thi ngầm bời hệ thống mà người sử dụng không thấy được. Mỗi service để dược mở rộng từ lớp cơ sở là service trong gói android.app. Có thể kết nối tới hoặc kích hoạt một service thông qua interface mà nó đưa ra. Ví dụ như một đoạn chương trình chơi nhạc, sẽ có vài hoạt động cho phép người dùng duyệt danh sách các bài hát và lựa chọn bài nào để phát. Tuy nhiên, chức năng chơi nhạc không được thiết kế như một hoạt động bởi chúng ta sẽ muốn chuyển qua cửa sổ khác, như khi soạn tin nhắn thì bài nhạc vẫn tiếp tục được phát. Trong trường hợp này, ứng dụng chơi nhạc sẽ khởi tạo một service bằng cách sử dụng phương thức conttext.startservice() Một ứng dụng có thể dễ dàng thực hiện liên kết tới một service đang chạy (thậm chí khởi động nếu nó chưa thực thi) bằng phương thức Context.bindService(). Khi đó service này sẽ cung cấp cho ứng dụng cơ chế để giao tiếp với chúng thông qua giao diện gọi là IBinder (đối với dịch vụ chơi nhạc có thể cho phép dừng hoặc chuyển qua bài nhạc kế tiếp).  Vòng đời của service Vòng đời của một service được hiểu là quá trình hoạt động từ khi nó được tạo ra cho tới khi bị loại khỏi hệ thống. Có hai cách thức để một service có thể được chạy trong hệ thống:  Khi hệ thống có lời gọi tới phương thức Context.startService(). Trong trường hợp này, service sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức Context.stopService().
  • 9.  Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với service (service sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt động). Ứng dụng sẽ nhận được một đối tượng IBinder do service trả lại để có thể gọi các phương thức Callback phù hợp để truy cập tới các trạng thái của service. Nếu do lời gọi Context.bindService() mà service được khởi tạo thì nó sẽ được thực thi cho tới khi nào kết nối trên (tức là đối tượng IBinder) vẫn còn tồn tại. 5.1.3. Broadcast receivers Broadcast receivers là một thành phần không làm gì cả nhưng nó nhận và phản hồi lại các thông báo quảng bá. Nhiều quảng bá có nguồn gốc từ mã hệ thống, ví dụ thông báo thay
  • 10. đổi múi giờ, pin yếu, ảnh đã chụp hay thay đổi ngôn ngữ. Các ứng dụng có thể khởi động quảng bá, ví dụ để các ứng dụng khác biết rằng dữ liệu đã được tải về xong trên thiết bị và sẵn sàng sử dụng. Một ứng dụng có thể có bất kỳ số lượng Broadcast receivers nào để nhận những thông báo quan trọng với nó. Tất cả các Broadcast receivers được kế thừa từ lớp BroadcastReceiver. Broadcast receivers không có giao diện. Tuy nhiên, chúng có thể khởi động một hoạt động để đáp lại thông tin mà nó nhận được, hay chúng có thể sử dụng NotificationManager để thông báo người dùng biết. Các thông báo có thể được sự chú ý của người dùng theo các cách các nhau như là sáng màn hình, rung thiết bị, bật âm thanh nào đấy… Thông thường, chúng đặt thông báo trên thanh trạng thái, nơi người dùng có thể nhận được thông báo. 5.1.4. Content provider Các ứng dụng có thể lưu trữ dữ liệu của mình trong các tập tin hoặc sử dụng cơ sở dữ liệu SQLite sẵn có v.v… Content Provider có chức năng cung cấp một tập hợp các phương thức cho phép một ứng dụng có thể lưu trữ và lấy dữ liệu được quản lý bởi content provider đó. Content Provider là một đặc trưng riêng của Android, nhờ đó mà các ứng dụng có thể chia sẻ dữ liệu với nhau một cách dễ dàng. 5.1.5. Tập tin khai báo (manifest) Trước khi có thể khởi chạy một ứng dụng thành phần, nó phải xem ứng dụng bao gồm những thành phần nào. Thêm nữa, các ứng dụng khai báo các thành phần của nó trong một tập tin khai báo để đóng gói lại vào trong gói Android (tập tin .apk chứa các mã nguồn, tập tin và tài nguyên). Tập tin này có cấu trúc của tập tin XML và luôn có tên là AndroidManifest.xml trong mọi ứng dụng. Nó làm một số thứ như thêm và khai báo các thành phần của ứng dụng, tên các thư viện ứng dụng cần liên kết tới (ngoài thư viện chuẩn của Android) và xác định các quyền cho ứng dụng. Tuy nhiên, nhiệm vụ chính của tập tin khai báo là khai báo các thành phần của ứng dụng. Một hoạt động có thể được khai báo như sau:
  • 11. Thuộc tính “name” của phần tử <activity> là tên các lớp con lớp Activity đã được cài đặt, thuộc tính “icon” và “label” trỏ đến tập tin tài nguyên chứa biểu tượng và nhãn được hiển thị cho người dùng. Các thành phần khác được khai báo theo cách tương tự: <service> dịch vụ, <receiver> bộ nhận quảng bá và <provider> content provider. Các hoạt động, dịch vụ và content provider có thể cùng được khai báo trong tập tin khai báo hoặc có thể được tạo tự động trong mã (như đối tượng BroadcastReceiver) và được đăng ký với hệ thống bằng cách gọi Context.registerReceiver(). 5.1.6. Intent Khi Tim Berners phát minh ra giao thức Hypertext Transfer Protocol (HTTP), ông cũng đã phát minh ra một định dạng URLs chuẩn. Định dạng này là một hệ thống các động từ đi kèm các địa chỉ. Địa chỉ sẽ xác định nguồn tài nguyên như Web page, hình ảnh hay các server-side program. Động từ sẽ xác định cần phải làm cái gì với nguồn tài nguyên đó: GET để nhận dữ liệu về, POST để đưa dữ liệu cho nó để thực thi một công việc nào đó. Khái niệm Intent cũng tương tự, Intent là một mô tả trừu tượng của một hành động được thực thi. Nó đại diện cho một hành động đi kèm với một ngữ cảnh xác định. Với Intent thì có nhiều hành động và nhiều component (Một thể hiện của một class java dùng để thực thi các hành động được đặc tả trong Intent) dành cho Intent của Android hơn là so với HTTP verbs (POST, GET) và nguồn tài nguyên (hình ảnh, web page) của giao thức HTTP, tuy nhiên khái niệm vẫn tương tự nhau. Intent được sử dụng với phương thức startActivity() để mở một Activity, và dùng với broadcastIntent để gởi nó đến bất kì BroadcastReceiver liên quan nào, và dùng với startService(Intent), bindService(Intent, ServiceConnection, int) để giao tiếp với các Service chạy dưới nền. <?xml version="1.0" encoding="utf-8"?> <manifest . . . > <application . . . > <activity android:name="com.example.project.FreneticActivity" android:icon="@drawable/small_pic.png" android:label="@string/freneticLabel" . . . > </activity> . . . </application> </manifest>
  • 12. Intent cung cấp một chức năng cho phép kết nối hai chương trình khác nhau trong quá trình thực thi (runtime) (Cung cấp khả năng cho phép hai chương trình khác nhau giao tiếp với nhau). Chức năng quan trọng và được sử dụng nhiều nhất của một Intent là mở một Activity, nơi mà nó có thể được dùng như một vật kết nối các Activity lại với nhau (Truyền thông tin giữa hai Activity khác nhau). Thành phần chính của Intent bao gồm: Action: Xác định hành động sẽ được thực thi, các hành động này có thể là: ACTION_VIEW, ACTION_EDIT, ACTION_MAIN… Data: Các dữ liệu được sử dụng để hành động (Action) thao tác trên nó, như bản ghi về một người nào đó trong cơ sở dữ liệu chứa các contact của thiết bị. Ví dụ về thành phần action/data: ACTION_VIEW content://contacts/people/1 – hiển thị thông tin liên lạc của người có mã là “1”. ACTION_DIAL content://contacts/people/1 – gọi điện cho người có mã là “1”. ACTION_DIAL tel:123 – gọi đến số điện thoại “123” Ngoài ra, Intent còn có các thuộc tính phụ sau: Category: thông tin chi tiết về hành động được thực thi, ví dụ như CATEGORY_LAUNCHER có nghĩa là nó sẽ xuất hiện trong Launcher như ứng dụng có mức level cao (top-level application), trong khi CATEGORY_ALTERNATIVE chứa thông tin danh sách các hành động thay thế mà người dùng có thể thực thi trên phần dữ liệu mà Intent cung cấp. Type: Chỉ định 1 kiểu dữ liệu chính xác (kiểu MIME) được mang bởi intent. Thường thì type được suy ra từ chính dữ liệu. Bằng cách thiết lập thuộc tính type, bạn có thể vô hiệu hóa sự phỏng đoán kiểu dữ liệu và chỉ định rỏ một kiểu chính xác.
  • 13. Component: Chỉ định rõ tên của lớp thành phần (Một thể hiện của một class java dùng để thực thi các hành động được đặc tả trong Intent) sử dụng cho Intent . Thông thường thì nó được xác định bằng cách tìm kiếm thông tin trong Intent (Các thông tin như Action, data/type, và category) và nối chúng với các component (Một thể hiện của một Class java dùng để thực thi các hành động được đặc tả trong Intent) có thể đáp ứng được các yêu cầu sử lý của Intent. Extracts: là một đối tượng Bundle dùng để chứa các thông tin kèm theo được dùng để cung cấp thông tin cần thiết cho component. Ví dụ: Nếu có một Intent đặc tả hành động send email thì những thông tin cần chứa trong đối tượng Bundle là subject, body… Intent Resolution Intent có 2 dạng chính sau: Explicit Intents: Xác định rõ một component (Một thể hiện của một class java dùng để thực thi các hành động được đặc tả trong Intent) (thông qua phương thức setComponent(ComponentName) hoặc setClass(Context, Class)) cung cấp lớp sẽ thực thi các hành động được đặc tả trong Intent. Thông thường thì những Intent này không chứa bất kỳ thông tin nào khác (như category, type) mà đơn giản chỉ là cách để ứng dụng mở các Activity khác bên trong một Activity. Implicit Intents: Không chỉ định một component nào cả, thay vào đó, chúng sẽ chứa đủ thông tin để hệ thống có thể xác định component có sẵn nào là tốt nhất để thực thi hiệu quả cho Intent đó. Khi sử dụng Implicit intents, do tính chất chuyên quyền của loại Intent này,ta cần phải biết phải làm gì với nó. Công việc này được đảm nhiệm bởi tiến trình của Intent resolution, nó giúp chỉ định Intent đến một Actvity, BroadcastReceiver, hoặc Service (hoặc thỉnh thoảng có thể là 2 hay nhiều hơn một activity/receiver) để có thể xử lý các hành động được đặc tả trong Intent. Bất cứ thành phần nào (Activity, BroadcastReceiver, Service) khi muốn sử dụng trong ứng dụng đều phải được đăng kí trong file AndroidManifest.xml. Trong đó cầnđịnh nghĩa một thẻ <intent-fillter> cung cấp các thông tin để hệ thống có thể xác định được cái mà các component này (Activity, BroadcastReceiver, Service) có thể xử lý được (những action mà component này có thể thực hiện được).
  • 14. Intent Fillter là bản đặc tả có cấu trúc của các giá trị của Intent dùng để xác định component phù hợp để thực hiệncác hành động được đặc tả trong Intent. Một Intent Fillter nối các hành động, categories và dữ liệu (hoặc thông qua type hoặc sheme) trong Intent. Intent Fillter được khai báo trong AndroidManifest.xml và sử dụng thẻ intent-fillter. Một Intent Fillter có các thành phần chính sau: Action: Tên hành động mà component có thể thực thi. Type:Kiểu hành động mà component có thể thực thi. Category: Phân nhóm các hành động. Đối với những dữ liệu không phải là nội dung cụ thể (VD: URI) thì việc xem xét lựa chọn Intent phù hợp sẽ dựa vào lược đồ(Scheme) của dữ liệu được cung cấp (VD: http:// mailto: …) Luật xác định component phù hợp Intent Để xác định một thành phần là phù hợp với một Intent hệ thống sẽ tiến hành xem xét từ trên xuống. Trước tiên khi một Intent được gọi, Android sẽ tìm kiếm những component (Activity, BroadcastReceiver, Service) có action-name phù hợp với Intent. Nếu có component phù hợp Android sẽ mở component đó lên để thực thi các hành động theo yêu cầu. Nếu có nhiều hơn 1 component có action-name phù hợp thì Android sẽ yêu cầu người dùng chọn component phù hợp. Ngược lại nếu không có component nào phù hợp Android sẽ tiến hành xem xét kiểu dự liệu của Intent cung cấp xem có component nào có đủ năng lực để sử lý kiểu dữ liệu đó không. Nếu không được Android sẽ tiến hành xem xét scheme của dữ liệu đó để tìm kiếm component phù hợp. Nếu vẫn không tìm được component phù hợp Android sẽ tiến hành xem xét các component có chung Category với Intent để xác định component.
  • 15. 6. Giao tiếp giữa các tầng