Nó vẫn còn đầy đủ thông tin trạng thái của nó và vẫn còn được quản lý bởi bộ quản lý cửa sổ của hệ thống (window manager), nhưng nó có thể bị hệ thống tiêu diệt (kill) nếu như bộ nhớ [r]
(1)LẬP TRÌNH ANDROID CĂN BẢN
(2)(3)Các components
Một ứng dụng Android hình thành từ việc kết hợp thành phần (components) lại với Bao gồm:
Activity
Views ViewGroups
Intents
Services
Content Provider
Broadcast Receiver
(4)4
Activity
4
Activity đóng vai trị trung tâm ứng dụng Android
Một activity thể hình (screen) giao diện người dùng trực quan Thông qua giao diện này, activity nhận thao tác từ người dùng xử l{ chúng
Một ứng dụng Android có nhiều Activity Trong trình hoạt động, ứng dụng Android chuyển vị từ activity sang activity khác
Main Activity activity gọi ứng dụng khởi động Main Activity phải khai báo Manifest file
(5)Services
Service thành phần tương tự activity khơng có giao diện
Service chạy chế độ background
Một service tương tác liệu với activity service khác
(6)6
Intents
6
Intent có vai trị thơng điệp bất đồng (asynchronous messages) cho phép ứng dụng gọi thực thi chức component khác Android Ví dụ gọi thực thi Activity hay Service
Một ứng dụng Android trực tiếp gọi thực thi component (explicit intent) yêu cầu hệ điều hành Android lựa chọn số component đăng k{ để thực thi (implicit intents)
Ứng dụng Android dùng Intent để chia liệu components Intent cho phép gửi nhận data Activity Service
Intent phương tiện để đóng gói Service Activity trước chạy chúng Intent broadcast kiện toàn hệ
thống kiện xảy
(7)Views ViewGroups
Views đối tượng trực quan hình thành nên giao diện người dùng Ví dụ như: button, tetxfield,…
View có thuộc tính (attributes) mà người lập trình dùng để thay đổi hình dạng hành vi View
ViewGroup đóng vai trò Layout Manager đảm nhiệm việc xếp Views hình (screen)
(8)8
Content Provider
8
Content Provider cung cấp giao diện có cấu trúc để truy cập liệu Thông qua Content Provider, ứng dụng Android chia sẻ liệu với
Contain Provider thực tập hợp phương thức cho phép ứng dụng truy cập liệu tổ chức theo cách mà quản l{
Thực Content Provider khơng lưu trữ liệu mà cung cấp giao tiếp cho phép ứng dụng truy cập liệu Các liệu lưu trữ hệ thống tập tin sở liệu SQLite
Các tiến trình tương tác với liệu Content Provider thực thông qua đối tượng trung gian, Content Resolver
(9)Broadcast Receiver
Broadcast Receiver đăng k{ nhận thơng điệp (messages) hệ thống Intents
Broadcast Receiver nhận thông báo từ hệ thống có tượng xảy
Ví dụ: Broadcast Receiver nhận thơng báo hệ thống vừa boot máy hoàn chỉnh có gọi đến, máy hết pin, bạn có email
(10)10
Application Context
10
Application Context có vị trí trung tâm (top-level) ứng dụng Android
Chúng ta dùng Context ứng dụng Android để truy cập thiết lập (settings), tài nguyên (resources) chia sẻ
activity
Bởi Activity thừa kế từ Context Class nên ta dùng trỏ this để truy cập Context ứng dụng
Để lấy Context ứng dụng, ta sử dụng method Context.getApplicationContext() Activity.getApplication()
(11)(12)12
Các bước thực
12
Ta xây dựng ứng dụng Android đơn giản sau Nó có cơng dụng để chuyển đổi giá trị từ độ C (Celsius) sang độ F (Fahrenheit) ngược lại Các bước thực gồm có:
Tạo project
Tạo tài nguyên Thiết kế giao diện Viết code
Chạy ứng dụng viết
(sau đó, ta khảo sát nội dung Manifest File ứng dụng)
(13)Tạo project
(14)14
Tạo project
14
Nhấp chọn version hệ điều hành Android version thư viện Android API mà chương trình dịch sang Rồi nhấp Next
G
V
: V
õ
Tấ
n D
(15)Tạo project
Đặt tên cho ứng dụng Đặt tên cho gói (package) mà ứng dụng đóng gói vào Đặt tên cho Activity chương trình Chọn version SDK tối thiểu
(16)16
Khảo sát Package Explorer
16
Khảo sát Package Explorer project Hãy { đến thành phần ConvertActivity.java, R.java, thư mục res/layout/main.xml res/values/strings.xml, AndroidManifest.xml
G
V
: V
õ
Tấ
n D
(17)Tạo attribute resource
Các thuộc tính (attribute) tài nguyên (resource) sử dụng ứng dụng Ví dụ chuỗi (string), màu sắc (color) Chúng định nghĩa XML Java source code Ta mở tập tin
“res/values/string.xml” để thêm vào thuộc tính tài nguyên
Nhấp “Add”, chọn “Color” nhập vào tên
(18)18
Tạo attribute resource
18
Làm tương tự, ta tạo thuộc tính kiểu String với cặp tên giá trị theo bảng sau:
G
V
: V
õ
Tấ
n D
(19)Thiết kế giao diện
Android SDK cho phép ta thiết kế giao diện rich editor XML
(20)20
Thiết kế giao diện
20
Ta sử dụng XML source code để viết giao diện sử dụng chức kéo thả từ Palette rich editor
G
V
: V
õ
Tấ
n D
ũng
(21)Thiết kế giao diện
(22)22
Thiết kế giao diện
22
Android SDK tự động hiệu chỉnh nội dung file “main.xml” với nội dụng sau:
G
V
: V
õ
Tấ
n D
(23)Thiết kế giao diện
Có hai cách để chỉnh sửa thuộc tính giao diện
Dùng right-mouse-menu chỉnh sửa file “main.xml“
Ta xóa chuỗi khởi động EditText project vừa tạo cách Mở file “main.xml”, xóa thuộc tính android:text="EditText“ phần EditText Nhấp vào thẻ “Graphical layout” để kiểm tra ta thấy văn bị xóa
Bây ta thay đổi thuộc tính cho radiobutton cách Nhấp vào vào
radiobutton thứ Xuất menu dạng pop-up, chọn “Edit Text…”, gán tài nguyên “celsius” làm thuộc tính văn cho radiobutton
(24)24
Thiết kế giao diện
24
G
V
: V
õ
Tấ
n D
(25)Thiết kế giao diện
Dùng cách cách hai để gán thuộc tính “Checked” “true” cho radiobutton thứ Gán tài nguyên loại chuỗi có tên “calc” cho thuộc
tính văn button layout
Gán “myClickHandler” cho thuộc tính “onClick” button
Gán “numberSigned” “numberDecimal” cho thuộc tính “Input type” EditText
Như có views (controls) gồm EditText, hai Radiobuttons Button Chúng xếp theo dạng LinearLayout Trong chế độ Graphics Layout, ta nhấp phải vào
chỗ trống bất kz layout chương trình, chọn Other Properties/All by Name/Background Chọn “Color”, chọn “myColor” danh sách
(26)26
Thiết kế giao diện
26
G
V
: V
õ
Tấ
n D
(27)Viết code
Trong ứng dụng thiết kế, tạo activity có tên ConvertActivity Nên nhớ, ứng dụng Android có nhiều Activity Chúng ta viết code cho ConvertActivity cách mở file ConvertActivity.java
Ở bước trên, khai báo sử dụng hàm
“myClickHandler” cho thuộc tính “onClick” button để xử l{ thao tác nhấp vào button
(28)28
Viết code
28
Nội dung file ConvertActivity.java phải sau:
G
V
: V
õ
Tấ
n D
(29)Viết code
(30)30
Chạy ứng dụng viết
30
Chọn tên project, nhấp phải vào tên Xuất menu pop-up Chọn Run-As/Android
Application Kiên nhẫn chờ, thiết bị giả lập (điện thoại Android giả lập) khởi động chậm Kết ta sau:
G
V
: V
õ
Tấ
n D
(31)Chạy ứng dụng viết
(32)32
Khảo sát Manifest File
32
G
V
: V
õ
Tấ
n D
ũng
(33)LIFE CYCLE CỦA
(34)34
Activity Stack
34
• Một ứng dụng Android gồm nhiều Activity Tại thời điểm, hệ thống Android có nhiều ứng dụng chạy Một Activity tương ứng với screen Tại thời điểm, có screen xuất hình thiết bị
• Dó Activities hệ thống quản lý activity stack
• Khi activity khởi động (started), đặt đỉnh stack activity chạy (running activity) Activity trước (previous activity) phải nằm activity stack trở foreground (tiền cảnh) activity
• Nếu người dùng nhấn Back Button activity stack kích hoạt để trở foreground
(35)Activity Stack New Activity Activity Activity Activity Last Running Activity Activity n-1 Running Activity New Activity được khởi động
Button Back nhấn hoặc running
activity bị đóng
Activity Stack
Các Previous Activities được lưu trong Stack
(36)36
Sự chuyển trạng thái activity
36
G
V
: V
õ
Tấ
n D
ũng
Một activity có trạng thái (state) sau đây:
1 Nó active hoặc running
(37)Các trạng thái activity
Một activity có trạng thái (states):
1 Nó trạng thái active (hay cịn gọi running)
foreground (tiền cảnh) hình thiết bị (screen), tức
tại đỉnh activity stack
(38)38
Các trạng thái activity
38 G V : V õ Tấ n D ũng
Một activity có trạng thái (states) (tiếp theo):
2 Một activity trạng thái paused khơng cịn focus (được chọn) cịn thấy hình
Đó có activity khác nằm phía activity suốt khơng phủ trùm tồn
(39)Các trạng thái activity
Một activity có trạng thái (states) (tiếp theo):
3 Một activity trạng thái stopped hồn tồn bị che khuất activity khác
(40)40
Các hàm tương ứng với trạng thái activity
40
G
V
: V
õ
Tấ
n D
(41)Các method trạng thái
Method: onCreate()
• Được gọi activity lần tạo
• Vì người ta thường thực cơng việc có tính khởi động trong hàm onCreate như: tạo views, liên kết liệu, khởi
động kết nối,…
• Method truyền đối tượng Bundle chứa thơng tin trạng thái trước activity (containing the activity's previous state), trước thơng tin trạng thái lưu giữ lại
(42)42
Các method trạng thái
42 G V : V õ Tấ n D ũng
Method: onRestart()
• Method gọi trước activity bị stopped Sau đó activity chiếm quyền ưu tiên để khởi động lại
• Ln theo sau method onStart()
Method: onStart()
• Được gọi trước activity nhìn thấy người dùng (activity becomes visible to the user)
(43)Các method trạng thái
Method: onResume()
1 Được gọi trước activity bắt đầu cho phép người dùng tương tác (activity starts interacting with the user)
(44)44
Các method trạng thái
44 G V : V õ Tấ n D ũng
Method: onPause()
1 Được gọi hệ thống bắt đầu việc resume activity khác 2 Method thường dùng để: lưu lại thay đổi chưa
kịp lưu để bảo toàn liệu, dừng hoạt hình (animations) các cơng việc có tiêu thụ (consume) CPU nhiều, vân… vân…
3 Được theo sau method onResume() activity trở foreground, theo sau method onStop() trở nên khơng thể nhìn thấy người dùng (if it becomes invisible to the user)
(45)Các method trạng thái
Method: onStop()
1 Được gọi activity khơng cịn nhìn thấy người dùng (no longer visible to the user)
2 Điều xảy activity bị hủy (destroyed), có một activity khác (existing activity new activity) resume
3 Thường theo sau method onRestart() activity trở lại hoạt động tương tác với người dùng, theo sau bởi method onDestroy() bị hệ thống loại bỏ
(46)46
Các method trạng thái
46 G V : V õ Tấ n D ũng
Method: onDestroy()
1 Được gọi trước activity bị hủy (destroy)
2 Đây lời gọi cuối mà activity nhận
3 Nó gọi activity hồn thành (finishing) (có activity gọi method finish() lên nó), gọi bởi hệ thống hệ thống cần tiết kiệm không gian
4 Ta phân biệt hai trường hợp cách dùng method
isFinishing()
(47)Các trạng thái dễ bị tiêu diệt
Killable States
• Các activities rơi vào trạng thái killable states bị kết thúc (terminated) lúc hệ thống mà không kịp thực thi thêm dịng code code activity
• Ba methods làm cho activity dễ bị tiêu diệt onPause(), onStop(),
và onDestroy()
• Chỉ có method onPause() đảm bảo gọi trước
activity bị tiêu diệt Còn method onStop() onDestroy() khơng
(48)48
Tài liệu tham khảo
48 G V : V õ Tấ n D ũng
Nội dung slide có tham khảo tài liệu sau:
• [1] Tập slide giảng lập trình Android tác giả Victos Matos (Cleveland State University)
• [2] Trang web “Android Development Tutorial” tác giả Lars Vogel
• [3] HOUR-3 sách "SAMS Teach yourself android application development in 24 hours“ tác giả Lauren Darcey Shane
(49)