Tải bản đầy đủ (.docx) (12 trang)

Đề cương ôn tập Android - Chuẩn

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 (161.51 KB, 12 trang )

Đề cương ôn tập Android
Câu hỏi:
Trả lời:
Câu 1: Ưu và nhược điểm của android:
1. Ưu điểm:
An ninh: Các lỗi nhanh chóng được phát hiện và sửa đổi
Chất lượng: Các ứng dụng không ngừng được cải tiến, phù hợp với nhu cầu sử
dụng của nhiều người.
Khả năng tùy biến: Những đoạn mã trong chương trình được công khai, nên
người dùng có thể thêm bớt các chức năng túy ý muốn.
Chi phí: Sử dụng sản phẩm mã nguồn mở hoàn toàn không tốn phí, tiết kiệm
kinh phí.
2. Nhược điểm:
Khả năng bảo mật: Vì Android là hệ điều hành mã nguồn mở nên tất cả các
thông tin về hệ thống mọi người đều nắm được. Đây là ưu điểm và cũng là
nhược điểm, bởi vì các hacker có thể tìm kiếm những lỗ hổng hệ thống và tạo
ra những mã độc.
Đột phá ý tưởng: Dù Android đang trên đà phát triển nhanh nhưng trên một
góc độ nào độ nào đó Android vẫn là người chạy theo những ý tưởng của gã
khổng lồ iPhone. Những người phát triển ứng dụng cho Android hầu như chỉ
đều lấy ý tưởng từ iPhone.
Câu 2: Kiến trúc nền tảng Android gồm mấy lớp? Chi tiết các lớp như thế nào?
1. Kiến trúc nên tảng Android gồm các lớp sau:
1.1. Linux Kernel:
Android được xây dựng trên nền tảng Linux Kernel 2.6 mã nguồn mở, chứa
những trình điều khiển( driver) dùng để điều khiển phần cứng như Keypad,
Wifi, Camera, Audio, Màn hình.
1
1.2. Android Framework:
Được phát triển dựa trên nền tảng của Linux 2.6 được cấu thành từ hai
thành phần con sau:


• Android native libraries: đây là thư viện C/C++, bạn sẽ gọi thư viện
này thông qua giao diện Java(trong tầng trên Application
Framework).
• Android Runtime: gồm các thư viện lõi của Java và máy ảo Davik.
1.3. Application FrameWork:
• Tầng này chứa thư viện Java hỗ trợ người dùng giao tiếp với tần
Android FrameWork Trong tầng này thỉ Activity Manager là tầng
quan trọng nhất vì nó quản lý chu kì sống của Activity.
1.4. Application:
• Đây là tầng cao nhất và mọi ứng dụng của Android sẽ nằm ở tầng này.
• Google đã hỗ trợ viết sẵn một số thư viện tiện ích trong tầng này giúp bạn
truy xuất thông tin ở những phần bên dưới linh hoạt và hiệu quả nhất.
Câu 3 (Trùng câu 10)
Câu 4: Cấu trúc lưu trữ và các thành phần tạo nên một dự án Android?
1.Cấu trúc lưu trữ:
- Thư mục mã nguồn(src): thư mục này chứa toàn bộ các tập tin *.java có trong ứng
dụng. Các tập tin được tổ chức trong các java package.
- Thư mục thư viện Android: Là bộ thư viện mà hệ điều hành Android hỗ trợ cho ứng
dụng của bạn.
- Thư mục assets: Mặc định khi vừa tạo ứng dụng Android trong Eclipse thì thư mục
assets rống. Mục tiêu chính của thư mục này là dùng để lưu trữ dữ liệu do bạn định
nghĩa như: tập tin html, tập tin xml.
- Thư mục res: Dùng để lưu trữ tài nguyên của ứng dụng. Trong thư mục này bạn lưu
trữ bất cứ loại tài nguyên nào từ kiểu chuỗi tới hình ảnh.
- Thư mục bin, libs và referenced libraries: mặc định khi tạo ứng dụng libs sẽ không
hiển thị. Mục đích của thư mục này là để chứa những thư viện hỗ trợ phát triển ứng
dụng. Các thư viện được thêm vào thư mục này không phải là thư viện trong JDK hay
Android SDK mà là một thư viện bên ngoài.
- Thư mục gen: Thư mục gen chứa tập tin R.java được ADT phát sinh. Các tài nguyên
được thêm trong thư mục res/ sẽ được ADT phát sinh một ID. Giá trị ID này sẽ được

lưu trữ trong R.java. Khi người dùng muốn truy xuất tài nguyên nào đó, chỉ cần chỉ
định giá trị ID tương ứng của nó.
- Tập tin androidmanifest.xml: Đây được xem là tập tin quan trọng nhất trong dự án
và nó chứa tất cả thông tin của dự án. Trước khi ứng dụng của bạn chạy, hệ thống sẽ
2
đọc những thông tin này. Nếu bạn không khai báo thành phần nào đó trước khi sử
dụng thì hệ thống sẽ báo lỗi.
Các thành phần chính của của file:
+ Tên Java package
+ Các thành phần của ứng dụng
+Quyền hạn của ứng dụng.
+ Min SDK.
2. Thành phần tạo nên 1 dự án Android
1. Activities:
- Một Activity đại diện cho một cửa sổ chứa giao diện ứng dụng mà người
dùng có thể tương tác trực tiếp.
- Trong mỗi activity ngoài việc thiết lập giao diện, nó còn phải xử lý
những tương tác giữa người dùng với giao diện như: chạm, bấm nút
lệnh
2. Services:
- Đây là loại Application Component chạy nền để thực hiện những công
việc lieen tục và kéo dài.Một Activity thường được dùng để hiển thị một
giao diện nào đó, nhưng một Service không có giao diện.
- Một Service được tạo ra trong ứng dụng sẽ là một lớp con của lớp
Service trong Android Platform và bạn có thể dùng một Activity để khởi
động Service này.
3. Content Providers:
- Content Providers trong Android được dùng để quản lý một tập các dữ
liệu chia sẻ. Bạn có thể lưu trữ dữ liệu dưới dạng tập tin, cơ sở dữ liệu
SQLite, trên Website hay trên bất kì vị trí lưu trữ nào mà ứng dụng của

bạn có thể truy xuất.
- Một Content Providers do bạn tạo ra sẽ được kế thừa từ lớp Content
Provider của Android Platform.
4. Broadcast Receivers:
- Broadcast Receivers là loại Component trong ứng dụng để lắng nghe
các thông điệp (Broadcast) được gửi đi từ hệ thống.
- Bản than ứng dụng cũng có thể gửi đi những thông điệp(Broadcast) để
những ứng dụng khác biết.
- Một đối tượng Broadcast Receiver được tạo ra từ lớp cha
BroadcastReceiver trong Android Platform.
Câu 5: Activity là gì? Có mấy loại activity ?
1. Khái niệm Activity :
Activity là cửa số giao diện ứng dụng mà người dùng có thể tương tác trực tiếp
chẳng hạn như gọi điên, nhắn tin, chụp hình, gửi mail, hay xem bản đồ.
2. Có 3 loại Activity:
3
• Float Activity: là dạng Activity nổi, có kích thước không phủ lấp toàn bộ
màn hình.
• Acitivity Group: là một nhóm Activity nhúng vào các Acitivity khác
• Full-screen Activity: là dạng Activity phủ kín toàn màn hình.
Câu 6: Có mấy trạng thái mà một activity có thể có?
1. Resumed:
Là trạng thái chạy của Acitvity. Khi Activity chuyển sang trạng thái này, giao
diện của nó sẽ hiển thị trên màn hình và dành được focus.
2. Pause:
Khi một Activity đang chạy mà có một Activity khởi động thì trạng thái của
Activity cũ sẽ chuyển sang dạng Paused.
3. Stopped:
Khi một Activity ở trạng thái này, giao diện của nó bị một Activity khác che
khuất hoàn toàn. Thực tế thì Activity vẫn còn tồn tại, nhưng bạn không thể nhìn

thấy nó. Những Acitivity này có thể bị hệ thống hủy khi một ứng dụng khác
yêu cầu cần them bộ nhớ để xử lý.
Câu 7: Trình bày vòng đời của một activity trong lập trình Android?
Vòng đời phát triển của một ứng dụng android:
4
Khởi động Acitvity
onCreate()

5
Acitvity dành được
focus
Người dùng bấm Back để
trở về Acitivity
Tiến trình bị hủy
onRestart()
Activity bị hủy hoàn toàn
onDestroy()onStop()
Activity chạy( trạng thái
Resumed)
Một activity khác đang
dành được focus
onPause()
Activit dành được
focus
Ứng dụng khác cần thêm
bộ nhớ để xử lý
Activity bị che khuất hoàn
toàn
onResume()
onStart()

Trong vòng đời của ứng dụng Android bạn cần phần biệt 2 loại sau: Visible Lifetime
và Foreground Lifetime :
- Visible Lifetime: Sảy ra từ sau khi gọi onStart –> cho tới lúc gọi onStop : trong
trường hợp này TA vẫn có thể thấy màn hình Activity (có thể tương tác khi nó là
foreground, không tương tác được khi nó không phải foreground như đã giải thích ở
trên)
- Foreground Lifetime: Sảy ra từ khi gọi onResume –> cho tới lúc gọi onPause :
trong suốt thời gian này Activity luôn nằm ở trên cùng và Ta có thể tương tác được với

Câu 8: Có mấy cách lưu trữ trạng thái của Activity. Phân biệt và cho ví dụ minh
họa việc sử dụng chúng.
1. Có hai cách để lương trữ thông tin trạng thái trong Activity :
• Trong sự kiện onSaveInstanceState(Bundle), bạn lưu trữ lại thông tin trạng
thái trong đối tượng Bundle, và trong sự kiện onCreate(Bundle) bạn sẽ lấy
lại các thông tin đã lưu trữ trước đóvà hiển thị lên giao diện.
• Trong sự kiện onPause() hoặc các sự kiện khác, bạn lưu lại thông tin trạng
thái trong đối tượng SharePreferences, và trong sự kiện onCreate(Bundle)
bạn sẽ đọc các thông tin đã lưu trữ và hiển thị lên giao diện.
2. Phân biệt giữa Bundle và Sharedpreferences
a. Để lưu trữ tạm thời dũ liệu trong vòng đời của một ứng dụng, chúng ta nên
sử dụng Bundle trong sự kiện onSaveInstance(Bundle): Trong trường hợp
này dữ liệu sẽ được lưu trong bộ nhớ cho đến khi ứng dụng bị đóng.
b. Để lưu trữ dữ liệu mang tính chất lâu dài và có chia sẻ giữa nhiều thể hiện
của ứng dụng, chúng ta nên sử dụng SharePreference : Thông tin trạng thái
này sẽ được lưu trữ trong bộ nhớ cho đến khi ứng dụng bị đóng.
Ví dụ: Tự minh họa > ^_^
6
Câu 9: Mô tả các sự kiện có thể xảy ra trong vòng đời của một Activity? Cho ví
dụ minh họa và giải thích các sự kiện trong Activity được gọi sau khi: Chạy
ứng dụng, Nhấn nút BACK, Nhấn nút HOME và Khởi động lại ứng dụng.

1. Các sự kiện để xử lý vòng đời của Activity như sau:
• onCreate(): Sự kiện này được gọi khi Activity được gọi lần đầu tiên. Trong sự
kiện này, bạn phải thực hiện những công việc như sau: tạo giao diện cho
Acitivity, tải dữ liệu vào danh sách, v v Sau sự kiện này thì sự kiện onStart()
được gọi.
• onRestart(): Acitivity sau khi được chuyển sang trạng thái Stopped, nếu muốn
hiển thị và dành được focus, sự kiện onRestart() phải được gọi. Sau sự kiện này
luôn là sự kiện onStart() được gọi.
• onStart(): Sự kiện này được gọi khi giao diện của Activity hiển thị trên màn
hình thiết bị. Lúc này, những tương tác giữ người dùng vẫn chưa được thiết lập,
và Acitivity vẫ chưa chuyên sang trạng thái nhận focus.
• onResume(): Sự kiện này được gọi khi Acitivity bắt đầu tương tác với người
dùng. Ở thời điểm này thì Acitivity của bạn được đặt trên cùng của ngăn xếp.
Theo sau sự kiện này, có thể là sự kiện onPause().
• onPause(): Khi một Acitivity khác muốn dày quyền hiển thị và trạng thái focus
thì Activity hiện hành sẽ gọi sự kiện onPause().
• onStop(): Sự kiện này được gọi khi Acitivity bị che khuất hoàn toàn bởi một
Acitivity và Activity khác cũng dành được focus.
• onDestroy(): Đây là sự kiện cuối cùng được gọi trước khi Activity bị hủy hoàn
toàn. Khi một Activity bị hủy nó sẽ không còn được lưu trong bộ nhớ nữa và
không khởi động lại được.
2. Ví dụ minh họa và xử lý:
Mô tả project:
Thuộc tính Giá trị
Project Name ActivityLifeCycle
Build Target Android 2.2
Application Name ActivityLifeCycle
Package Name android.com
Create Activity MainActivity
Minimum 7

1. Mở tập tin MainActivity.java trong package src/android.com và cập nhật
thông tin như sau:
Package android.com;
Import android.app.Activity;
Import android.os.Bundle;
Import android.util.Log;
Public class ActivityLifeCycle extends Activity{
String tag=” Events”;
@Override
Public void onCreate(Bundle saveInstanceSate){
Super.onCreate(saveInstanceSate);
7
setContentView(R.layout.main);
Log.d(tag,” Event: onCreate()”):
}
Public void onStart(){
Super.onStart();
Log.id(tag,”Event: onStart()”);
}
Public void onRestart(){
Super.onRestart();
Log.id(tag,”Event: onRestart()”);
}
Public void onResume(){
Super.onResume();
Log.id(tag,”Event: onResume()”);
}
Public void onPause(){
Super.onPause();
Log.id(tag,”Event: onPause()”);

}
Public void onStop(){
Super.onStop();
Log.id(tag,”Event: onStop()”);
}
Public void onDestroy(){
Super.onDestroy();
Log.id(tag,”Event: onDestroy()”);
}
}
1. Khi bấm nút Back trên thiết bị: Ba sự kiện được gọi theo thứ tự là onPause(),
onStop(), onDestroy(). Lúc này Activity đã bị hủy hoàn toàn và không còn tồn
tại trong bộ nhớ nữa.
2. Khi bấm nút Home : Có 2 sự kiện được gọi là onPause(), on Stop(). Lúc này
Activity Home dành được focus và che khuất MainActivity nên trạng thái của
MainActivity là Stopped. Thực chất Activity vẫn còn tồn tại trên hệ thống.
Câu 10: Application Resource là gì? Ý nghĩa và tầm quan trọng của nó trong ứng
dụng Android?
1. Khái niệm Application Resource:
Application Resource (Tạm dịch là tài nguyên ứng dụng) được hiểu là những
tài nguyên được sử dụng để thiết kế giao diện. Một số loại Resource mà ứng
dụng Android sử dụng như: Hình ảnh, giao diện, v v Tất cả các Application
Resource này được lưu trữ trong thư mục res/
2. Ý nghĩa và tầm quan trọng:
8
- Giúp cho thiết kế ứng dụng được đẹp, dễ sử dụng (vì giao diện là chính là
nơi tương tác giữa người sử dụng ứng dụng và ứng dụng) .
- Giao diện chính là bộ mặt của phần mềm nên cần được thiết kế rõ rang, dễ
sử dụng và app resource chính là nói lưu trữ những tài nguyên mà người
phát triển cần cho việc thiết kế giao diện.

Note: nên vẽ ra 1 cái hình so sánh giữa việc sử dụng giao diện và không sử
dụng giao diện. ^_^
Câu 11: Thư viện Android cung cấp bao nhiêu loại Layout?
Thư viện Android cung cấp 4 loại Layout thường xuyên được sử dụng trong
Android
1. Frame Layout:
• Là đối tượng đơn giản nhất.
• Chứa nhiều View và các View này sẽ được sắp chồng lên nhau.
• Nếu chứa nhiều View thì có thể xếp chồng lên nhau nếu chúng có cùng kích
thước thì những đối tượng nằm dưới sẽ bị che khuất.
2. Linear Layout:
Là dạng Layout tổ chức và sắp xếp các đối tượng đặt lien tiếp nhau theo
hàng ngang hoặc hàng dọc.
• Sắp xếp đối tượng theo hàng ngang:
Thuộc tính được thiết lập: android: orientation = “horizontal”
• Sắp xếp đối tượng theo hàng dọc:
Thuộc tính được thiết lập: orientation = vertical”
3. Table Layout:
Là dạng Layout được tổ chức, sắp xếp các đối tượng thành dòng và cột.
Chúng ta sử dụng <TableRow> để thiết kế một dòng trong Table và mỗi
dòng trong TableLayout có thể chứa một hoặc nhiêu View.
4. Relative Layout:
RelativeLayout, các đối tượng sẽ được sắp xếp theo vị trí tương đối với
nhau. Có nghĩa là đối với đối tượng, bạn phải xác định các đối tượng liền
kề: trái, phải, trên, dưới với nó.
Ngoài ra còn một số Layout khác như: Gallery, GrideView, ListView, v v. Nhưng
không thường xuyên được sử dụng.
Câu 12: Chức năng của Layout là gì? Việc thiết kế Layout có mấy cách?
1. Chức năng: Layout được dùng để quản lý các thành phần giao diện
khác theo 1 trật tự nhất định.

2. Có 2 cách để thiết kế Layout:
• Tạo trong tập tin XML
• Tạo trong mã nguồn
Cách phổ biến: sử dụng tập tin XML. Định dạng này cho phép
định nghĩa cấu trúc giống như HTML gồm một element gốc va
9
nhiều element con. Mỗi element trong XML Layout là một đối
tượng View hoặc View Group tỏng đó các đối tượng View đóng
vai trò là nốt lá, còn đối tượng ViewGroup là gốc hoặc nhánh
trong cây phân cấp các đối tượng trên giao diện.
Ví dụ minh họa: Một cái ví dụ cho thêm phần sinh động và thuyết phục ^_^
Câu 13: Theo bạn, cách thiết kế Layout nào thuận tiện cho người thiết kế
hơn?
Câu 12 đã trả lời rồi. Thông tin chi tiết xem câu 12 nhá. Nhưng nên bổ sung 1 em xml
cho nó hay. ( Nên có GUI).
Câu 14: Có mấy loại Menu trong Android? Chức năng của mỗi loại như thế nào?
Có 3 loại Menu trong Android:
1. Options Menu:
• Là loại Menu xuất hiện khi người dùng bấm nút Menu trên thiết bị.
• Hệ điều hành 2.3 trở xuống : Options Menu nằm ở dưới màn hình.
• Hệ điều hành 3.0 trở lên: Options Menu nằm ở Action Bar.
• Options Menu chứa những chức năng có hiệu lực trong phạm vi của
Activity hiện hành và có khả năng gọi thực thi một Activity khác.
2. Context Menu:
• Đây là loại Menu tương tự như Menu hiển thị khi bạn bấm chuột phải vào
một đối tượng nào đó trên máy tính PC hoặc laptop.
• Trong thiết bị Android để hiện thị đối tượng này bạn phải bấm và giữ một
đối tượng thì Context Menu cho đối tượng đó mới hiện thị.
3. Sub Menu:
• Là loại Menu hiển thị khi người dùng chọn một Item trên một Menu khác.

• Sub Menu có thể được dùng để tạo danh sách các Menu con cho Options
Menu hoặc Context Menu.
Câu 15: Có mấy cách để tạo một menu trong Android? Ưu và nhược điểm của
mỗi cách?
1. Android hỗ trợ 2 cách để tạo 1 Menu:
Tạo từ XML Menu Resource.
• Ưu điểm:
- Trực quan, đơn giản hơn vì được hỗ trợ kéo thả.
- Dễ sử dụng.
• Nhược điểm:
- Không phù hợp với tính chất hay thay đổi của một Menu có tính chất hay
thay đổi, phụ thuộc vào nội dung. Ví dụ: Contex Menu.
 Khi thiết thế Context Menu thường không thiết kế theo XML Menu
Resource.
- Tạo trong mã nguồn.
10
• Ưu điểm:
- Phù hợp với những Menu hay thay đổi tính chất do nội dung thay đổi.
• Nhược điểm:
- Khó sử dụng do phải nắm vững ngôn ngữ.
- Khó quản lý( Nếu không quản lý được tài nguyên, các biến, hay các nội
dung, phương thức ).
 Thích hợp cho các menu ít thay đổi như Options Menu.
Note: Nên cho ví dụ ở đây.
Câu 16: Có mấy loại Intent trong Android? Sự khác biệt giữa chúng?
Android cung cấp 2 loại Intent như sau:
1. Explicit Intent: Hay còn gọi là Intent công khai. Với loại Intetn này, tên của
Application Component đích phải được chỉ định và nêu rõ tên.
Ví dụ:
Intent intent= new Intent(ActivityOne, this, ActivityTwo.class);

startActivity(intent);
Trong phần khởi tạo, Explicit Intent phải chỉ định rõ Application Component
gọi và Application Component đích. Trong ví dụ minh họa trên,ActivityOne sẽ
là Application Component gọi, còn Activity Two sẽ là Application Component
đích. Thông tin trong Explicit Intent sẽ chứa hai thông tin tương ứng là
ActivityOne.this và ActivityTwo.class.
Sauk hi phương thức startActivity() được gọi thì một Activity mới (Trong ví dụ
này là ActivityTwo) sẽ được tạo, hiển thị và sẽ đặt trên cùng của ngăn xếp
Activity.
2. Implicit Intent: hay còn gọi là Intent ẩn. Với loại Intent này, tên của
Application Component đích không được chỉ định. Bạn chỉ cần thiết lập thông
tin về hành động (Action), dữ liệu (data hay extra) hay phân loại tương ứng sẽ
được thực hiện trên đối tượng đích, hệ thống sẽ tìm những ứng dụng thich hợp
để thwucj hiện yêu cầu trong Intent.
Câu 17: Intent Filter là gì? Tại sao phải sử dụng Intent Filter?
1. Khái niệm Inten Filter:
Activity, Service và BroadCast Receiver sử dụng Intent Filter để thông báo cho
hệ thống biết các dạng Implicit Intent mà nó có thể xử lý. Nói cách khác, Intent
Filter là bộ lọc Intent, chỉ cho những Intent được phép đi qua nó.
2. Phải sử dụng Intent Filter là vì:
Intent Filter mô tả khả năng của component định nghĩa nó. Khi hệ thống bắt
được 1 Implicit Intent (chỉ chứa 1 số thông tin chung chung về action, data và
category ), nó sẽ sử dụng những thông tin trong Intent này, kiểm tra đối chiếu
với Intent Filter của các component các ứng dụng, sau đó quyết định khởi chạy
11
ứng dụng nào thích hợp nhất để xử lý Intent bắt được. Nếu có 2 hay nhiều hơn
ứng dụng thích hợp, người dùng sẽ được lựa chọn ứng dụng mình muốn.
Câu 18: Trong Android, các Activity có thể trao đổi thông tin qua lại với nhau
hay không? Nếu có thì bằng cách nào?
1. Trong Android, các Activity có thể trao đổi thông tin qua lại với nhau.

2. Các Acitvit trao đổi thông tin qua lại với nhau thông quan Intent: Một đối
tượng Intetn được truyền vào phương thức startActivity() hay
startActivityForResult() để mở một Activity hay để yêu cầu một Activity đang
tồn tại làm một việc gì đó. Riêng đối với trường hợp Activity được mở bằng
phương thức startActivityForResult(), thì bạn có thể sử dụng phương thức
setResult() để lấy thông tin từ Activity được kích hoạt và trả về cho Activity
nguồn.

12

×