Tải bản đầy đủ (.pptx) (48 trang)

Lập trình android chapter03 life cycle

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 (644.55 KB, 48 trang )

Part 3

Android
Application’s Life Cycle
Notes are based on:
Unlocking Android
by Frank Ableson, Charlie Collins, and Robi Sen.
ISBN 978-1-933988-67-2
Manning Publications, 2009.

Android Developers
/>

3. Android – Application's Life Cycle

Outline


Android Applications





Activity, Service, Broadcast receiver, Content provider
process

Application’s Life Cycle









Activity Stack
Life Cycle States
Life Cycle Events
Application’s Lifetime: Visible Lifetime Foreground Lifetime
Life Cycle Methods: onCreate(), onStart(), onDestroy()...
Example: LifeCycleDemo

2


3. Android – Application's Life Cycle

Android Applications
Một ứng dụng (application) bao gồm một hoặc vài component được định nghĩa trong manifest file của ứng dụng,
gồm các loại:

1.
2.
3.
4.

Activity
Service
BroadcastReceiver
ContentProvider


Ứng dụng Android so với Java application:

•.
•.
•.

Cũng viết 1 class để thực hiện một công việc nào đó
Không dùng hàm main khởi tạo một object thuộc class đó và gọi phương thức của nó
Tùy theo loại object (Activity, Service....), Android sẽ gọi constructor và quản lý vòng đời của object đó

3

3


3. Android – Application's Life Cycle

Android Applications
1. Activity
Một activity thường trình diễn một giao diện người dùng đơn bằng hình ảnh mà từ đó có thể thực hiện một số hành động (action).

Tuy các activity cộng tác với nhau để hợp thành một giao diện người dùng thống nhất, mỗi activity có tính độc lập với các activity khác.

Thông thường, một activity được đánh dấu làm activity đầu tiên – cái sẽ được trình diễn cho người dùng khi ứng dụng được bật lên.

Việc gọi một activity từ bên trong một activity khác được thực hiện qua việc activity hiện hành gọi activity tiếp theo qua cơ chế intent.
(startActivity(Intent))

4


4


3. Android – Application's Life Cycle

Android Applications
2. Service

Một service không có giao diện người dùng bằng hình ảnh, thay vào đó, nó chạy ẩn tại background trong một khoảng thời gian không xác
định.

Có thể kết nối (bind to) với một service đang chạy (hoặc chạy service đó nếu nó hiện chưa chạy).

Trong khi đang kết nối, ta có thể liên lạc với service đó qua một giao diện mà nó cung cấp.

5

5


3. Android – Application's Life Cycle

Android Applications
3. Broadcast receiver

Một broadcast receiver là một component không làm gì ngoài việc nhận và phản ứng với các broadcast announcement.

Nhiều broadcast bắt nguồn từ mã hệ thống (ví dụ “you got mail“), nhưng bất cứ ứng dụng nào cũng có thể phát broadcast.


Broadcast receiver không hiển thị giao diện người dùng. Tuy nhiên, chúng có thể bật một activity để đáp ứng thông tin mà chúng nhận
được, hoặc - giống như cách làm của các service – chúng có thể dùng notification manager để thông báo cho người dùng.

6

6


3. Android – Application's Life Cycle

Android Applications
4. Content provider

Một content provider cung cấp một tập dữ liệu của một ứng dụng cho các ứng dụng khác.

Dữ liệu thường được lưu trong hệ thống file, hoặc trong một CSDL SQLite.

Mỗi content provider cài đặt một tập chuẩn các phương thức cho phép các ứng dụng khác lấy và lưu trữ dữ liệu thuộc loại mà nó kiểm
soát.

Tuy nhiên, các ứng dụng không gọi trực tiếp các phương thức này. Thay vào đó, chúng dùng một đối tượng content resolver và gọi các
phương thức của đối tượng đó. Một content resolver có thể nói chuyện với một content provider bất kì; nó cộng tác với provider để quản
lý quá trình liên lạc xuyên tiến trình (interprocess communication) phát sinh.

7

7


3. Android – Application's Life Cycle


Android Applications
Mỗi ứng dụng Android chạy trong một tiến trình riêng
(cùng với thực thể máy ảo Dalvik của riêng nó).

Mỗi khi có một request cần được xử lý bởi một component cụ thể nào đó,





Android đảm bảo rằng tiến trình ứng dụng của component đó đang chạy,
khởi động nó nếu cần, và
đảm bảo rằng có sẵn một thực thể (instance) của component đó, nếu cần thì tạo ra thực thể đó.

8

8


3. Android – Application's Life Cycle

Application’s Life Cycle
Một tiến trình Linux dành cho một ứng dụng Android được tạo ra cho ứng dụng đó khi có một số phần code của ứng dụng đó
cần chạy.
Tiến trình đó sẽ tồn tại cho đến khi

1.
2.


không còn cần đến nó nữa, HOẶC 
hệ thống cần thu hồi bộ nhớ để cho các ứng dụng khác dùng.

 

9

9


3. Android – Application's Life Cycle

Application’s Life Cycle
 
Một tính chất đặc biệt nhưng căn bản của Android là các tiến trình không trực tiếp kiểm soát vòng đời của chính mình.

Thay vào đó, số phận của nó được hệ thống quyết định dựa trên thông tin về

1.
2.
3.

Các phần ứng dụng hiện đang chạy,
Tầm quan trọng của chúng đối với người dùng
Hệ thống còn bao nhiêu bộ nhớ.

10

10



3. Android – Application's Life Cycle

Component Lifecycles
Các component của ứng dụng có một vòng đời (lifecycle)

1. bắt đầu: khi Android tạo thực thể của component để đáp ứng các intent
2. kết thúc: khi các thực thể đó bị hủy.
3. giữa chừng: đôi khi chúng có thể active hoặc inactive, hay trong trường hợp của các activity- visible hoặc invisible
đối với người dùng.

Life as an Android Application:
Start

Active / Inactive

End

Visible / Invisible

11

11


3. Android – Application's Life Cycle

Activity Stack




Các activity trong hệ thống được quản lý bằng một activity stack.



Khi một activity mới được bật, nó được đặt trên đỉnh stack và trở thành running activity -- activity trước
nó nằm bên dưới ở trong stack, và sẽ không hiện trở lại tại foreground (đỉnh stack) cho đến khi activity
mới kết thúc.



Nếu người dùng nhấn phím Back, activity tiếp theo trong stack sẽ dịch lên và chuyển sang trạng thái
hoạt động (active).

12

12


3. Android – Application's Life Cycle

Activity Stack
New Activity

Running Activity

New Activity started

Back button pushed or running activity
closed


Last Running Activity

Activity n-1

Activity Stack
Previous

...
Activity 3

Removed to free resources

Activities
Activity 2

Activity 1
Figure 1.

13

13


3. Android – Application's Life Cycle

Life Cycle States
An activity has essentially three states:

1.

2.
3.

It is active or running
It is paused or
It is stopped .

Figure 2.

14

14


3. Android – Application's Life Cycle

Life Cycle States
Một activity về căn bản có ba trạng thái:

1.

Active / running: đang ở tại foreground của màn hình
(trên đỉnh của activity stack), đang chạy.

2.

Paused: mất focus, vẫn được hiển thị trên màn hình
nhưng một activity khác đang nằm trên nó và cái activity mới này hoặc có nền trong suốt
hoặc không phủ kín màn hình.


Một activity ở trạng thái paused có thể bị hệ thống kill

nếu ở tình trạng rất thiếu bộ nhớ.

3.

Dừng (stopped) bị một activity khác che khuất hoàn toàn. Nó vẫn giữ tất cả các thông tin về
trạng thái và member. Hệ thống thường kill nó nếu cần bộ nhớ cho việc khác.

15


3. Android – Application's Life Cycle

Application’s
Life Cycle

Figure 3.

16

16


3. Android – Application's Life Cycle

Life Cycle Events
Summary: APP MILESTONES
Nếu một activity ở trạng thái paused hay stopped, hệ thống có thể loại nó ra khỏi bộ nhớ bằng cách yêu cầu nó kết thúc (gọi
phương thức finish() của nó), hoặc đơn giản là kill tiến trình của nó.


Khi nó lại được hiển thị trở lại cho người dùng, nó phải được bật lại (restart) từ đầu và khôi phục về trạng thái cũ.

Khi một activity chuyển trạng thái, nó được hệ thống thông báo về sự thay đổi đó bằng các lời gọi tới các phương thức sau
(transition methods):

void onCreate(Bundle savedInstanceState)

void onPause()

void onStart()

void onStop()

void onRestart()

void onDestroy()

void onResume()

17

17


3. Android – Application's Life Cycle

Life Cycle Events
Ta có thể override tất cả các phương thức đó để ứng dụng có hoạt động thích hợp khi trạng thái thay đổi.


(BẮT BUỘC)
Tất cả các activity phải cài đặt onCreate() để thực hiện khởi tạo khi đối đượng vừa được tạo (instantiated).

(Rất nên)
Nhiều activity cài onPause() để ghi nhận các thay đổi về dữ liệu (commit) và chuẩn bị cho việc ngừng tương tác với
người dùng.

18

18


3. Android – Application's Life Cycle

Application’s Lifetime
Entire Lifetime
Bảy phương thức chuyển trạng thái (Figure 3) xác định toàn bộ cuộc đời của một activity.



Toàn bộ cuộc đời của một activity bắt đầu từ lời gọi onCreate() đầu tiên tới một lời gọi onDestroy() duy nhất cuối
cùng.



Một activity thực hiện toàn bộ công việc khởi tạo trạng thái "global" tại onCreate(), và trả lại tất cả các tài nguyên
còn giữ tại onDestroy().

19


19


3. Android – Application's Life Cycle

Visible Lifetime
Visible Lifetime
visible lifetime của một activity kéo dài từ một lời gọi onStart() tới lời gọi tương ứng tới onStop().

Trong khoảng thời gian này, người dùng có thể nhìn thấy activity đó trên màn hình, tuy nó có thể không nằm tại
foreground và tương tác với người dùng.



Các phương thức onStart() và onStop() có thể được gọi nhiều lần, khi activity chuyển giữa hai trạng thái hiện và bị
che đối với người dùng.



Giữa hai phương thức này, ta có thể giữ các tài nguyên cần thiết cho việc hiển thị activity trên màn hình.

20

20


3. Android – Application's Life Cycle

Foreground Lifetime
Foreground Lifetime

foreground lifetime của một activity bắt đầu từ một lời gọi onResume() và kết thúc bởi lời gọi tương ứng tới onPause().

Trong khoảng thời gian này, activity đó đứng trước mọi activity khác trên màn hình và nó tương tác với người dùng.

Một activity có thể thường xuyên chuyển qua lại giữa các trạng thái resumed và paused

21

21


3. Android – Application's Life Cycle

Life Cycle Methods
Method:




onCreate()

Được gọi khi activity được tạo.
Đây là nơi ta nên thực hiện khởi tạo tĩnh thông thường — tạo giao diện người dùng (các view), nối dữ liệu với các
danh sách, v.v..




Tham số được truyền một đối tượng Bundle chứa trạng thái cũ của activity, nếu như trạng thái đã được ghi lại.
onStart() luôn được gọi sau đó.


22

22


3. Android – Application's Life Cycle

Life Cycle Methods
Method:




Được gọi ngay trước khi activity được khởi động lại sau khi đã bị dừng (stopped).
onStart() luôn được gọi sau đó.

Method:




onRestart()

onStart()

Được gọi ngay trước khi activity được hiện trên màn hình (visible).
Tiếp theo là onResume() nếu activity lên foreground, hoặc onStop() nếu nó bị che.

23


23


3. Android – Application's Life Cycle

Life Cycle Methods
Method:

onResume()

1.Được gọi ngay trước khi activity bắt đầu tương tác với người dùng.
2.Tại thời điểm này, activity nằm trên đỉnh activity stack và nhận input của người dùng.
3.Tiếp theo bao giờ cùng là onPause().

24

24


3. Android – Application's Life Cycle

Life Cycle Methods
Method:

onPause()

1.Được gọi khi hệ thống chuẩn bị chuyển sang một activity khác.
2.Phương thức này thường dùng để ghi các thay đổi chưa được lưu, dừng hoạt hình và những công việc tốn CPU khác,
v.v..


3.Nó nên làm công việc của mình thật nhanh vì activity tiếp theo phải đợi nó kết thúc thì mới resume được.
4.Tiếp theo là onResume() nếu activity quay lại, hoặc onStop() nếu nó không còn được hiển thị đối với người dùng.
5.Activity trong trạng thái này có thể bị hệ thống kill.

25

25


×