Đề cương ôn tập Android , Đề cương ôn tập Android Chuẩn
Trang 1Đề cương ôn tập Android
Câu hỏi:
Câu 1: Ưu và nhược điểm của android: 2
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? 2
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? 3
Câu 5: Activity là gì? Có mấy loại activity ? 5
Câu 6: Có mấy trạng thái mà một activity có thể có? 5
Câu 7: Trình bày vòng đời của một activity trong lập trình Android? 5
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 7
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 8
Câu 10: Application Resource là gì? Ý nghĩa và tầm quan trọng của nó trong ứng dụng Android? 10
Câu 11: Thư viện Android cung cấp bao nhiêu loại Layout? 10
Câu 12: Chức năng của Layout là gì? Việc thiết kế Layout có mấy cách? 11
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? 11
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? 11
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? 12
Câu 16: Có mấy loại Intent trong Android? Sự khác biệt giữa chúng? 13
Câu 17: Intent Filter là gì? Tại sao phải sử dụng Intent Filter? 13
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? 14
Trả lời:
1
Trang 2Câ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.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
Trang 3Câ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ẽ đọ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
3
Trang 42 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:
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ý
Trang 5Câ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:
5
Khởi động Acitvity
onCreate()
onStart()
onResume(
)
Activity chạy( trạng thái Resumed)
Một activity khác đang dành được focus
Acitvity dành được focus
Activit dành được focus
Activity bị che khuất hoàn toàn
Ứng dụng khác cần thêm
bộ nhớ để xử lý
Tiến trình bị hủy
Người dùng bấm Back để
trở về Acitivity
onPause()
onStop()
onRestart()
Trang 6Trong 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 nó
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 > ^_^
Trang 7Câ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:
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
Trang 8Log.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:
Trang 9- 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
Trang 10nhiề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