Get your classroom warmed up with this simple exercise, challenging students to decide and justify the location of a set of facilities. The slides are downloadable, and include teaching notes and a handout sheet for students to complete.
Get your classroom warmed up with this simple exercise, challenging students to decide and justify the location of a set of facilities. The slides are downloadable, and include teaching notes and a handout sheet for students to complete.
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...Ngo Trung
Quá trình chiếm 1 phần cũng rất quan trọng trong việc phát triển 1 phần mềm đó chính là Debug. Việc Debug trong Android tồn tại khá nhiều vấn đề với bộ giả lập AVD đì kèm Android SDK.bộ giả lập này thường khởi động rất lâu và có độ phản hồi rất chậm và hay gặp tình trạng lag ngay cả khi cấu hình máy tính sử dụng không phải là thấp.
Tình trạng này thường gây ức chế tới những nhà phát triển, và đồng thời nó cũng làm giảm tấc độ hoàn thành công việc
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...Ngo Trung
Quá trình chiếm 1 phần cũng rất quan trọng trong việc phát triển 1 phần mềm đó chính là Debug. Việc Debug trong Android tồn tại khá nhiều vấn đề với bộ giả lập AVD đì kèm Android SDK.bộ giả lập này thường khởi động rất lâu và có độ phản hồi rất chậm và hay gặp tình trạng lag ngay cả khi cấu hình máy tính sử dụng không phải là thấp.
Tình trạng này thường gây ức chế tới những nhà phát triển, và đồng thời nó cũng làm giảm tấc độ hoàn thành công việc
đTkh.ứng dụng tin học trong hoạt động kiểm toán nguyễn đình hựu[bookbooming...
Android chapter03-life-cycle
1. 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
http://developer.android.com/index.html
Part 3
2. 2
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. 3
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. Activity
2. Service
3. BroadcastReceiver
4. 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
4. 4
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
5. 5
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
6. 6
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
7. 7
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
8. 8
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
9. 9
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. không còn c n đ n nó n a,ầ ế ữ HO CẶ
2. h th ng c n thu h i b nh đ cho các ng d ng khác dùng.ệ ố ầ ồ ộ ớ ể ứ ụ
9
10. 10
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. Các ph n ng d ng hi n đang ch y,ầ ứ ụ ệ ạ
2. T m quan tr ng c a chúng đ i v i ng i dùngầ ọ ủ ố ớ ườ
3. H th ng còn bao nhiêu b nh .ệ ố ộ ớ
10
11. 11
3. Android – Application's Life Cycle
Component Lifecycles
11
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:
Active / Inactive
Visible / Invisible
Start End
12. 12
3. Android – Application's Life Cycle
Activity Stack
12
• 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).
13. 13
3. Android – Application's Life Cycle
Activity Stack
13
New Activity
Activity 1
Activity 2
Activity 3
Last Running
Activity
Activity n-1
. . .
Running Activity
New Activity
sta
rte
d
Back button pushed or
running
activity closed
Activity Stack
Previous
Activities Removed to
free
resou
rces
Figure 1.
14. 14
3. Android – Application's Life Cycle
Life Cycle States
14
An activity has essentially
three states:
1. It is active or running
2. It is paused or
3. It is stopped .
Figure 2.
15. 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.ạ
1. 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 .ế ộ ớ
2. 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.ệ
1515
3. Android – Application's Life Cycle
Life Cycle States
15
16. 16 16
3. Android – Application's Life Cycle
Application’s
Life Cycle
Figure 3.
17. 17
3. Android – Application's Life Cycle
Life Cycle Events
17
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 onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
18. 18
3. Android – Application's Life Cycle
Life Cycle Events
18
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.ẩ ị ệ ừ ươ ớ ườ
19. 19
3. Android – Application's Life Cycle
Application’s Lifetime
19
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().
20. 20
3. Android – Application's Life Cycle
Visible Lifetime
20
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.ệ ể ị
21. 2121
3. Android – Application's Life Cycle
Foreground Lifetime
21
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
22. 22
3. Android – Application's Life Cycle
Life Cycle Methods
22
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 đó.ượ ọ
23. 23
3. Android – Application's Life Cycle
Life Cycle Methods
23
Method: onRestart()
• Đ 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: 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.ế ị
24. 24
3. Android – Application's Life Cycle
Life Cycle Methods
24
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().
25. 25
3. Android – Application's Life Cycle
Life Cycle Methods
25
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.ả ợ ế ớ ượ
• 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.ế ượ ể ị ố ớ ườ
• Activity trong tr ng thái này có th b h th ngạ ể ị ệ ố kill.
26. 26
3. Android – Application's Life Cycle
Life Cycle Methods
26
Method: onStop()
1. Đ c g i khi activity không còn hi n th đ i v i ng i dùng.ượ ọ ể ị ố ớ ườ
2. Vi c này có th x y ra khi nó b h y (destroyed), ho c doệ ể ả ị ủ ặ
m t activity khác (cũ ho c m i) đã đ c resume và che nó.ộ ặ ớ ượ
3. Ti p theo làế onRestart() n u activity t ng tác tr lo i v iế ươ ở ạ ớ
ng i dùng, ho cườ ặ onDestroy() n u nó không quay l i.ế ạ
4. H th ng có th kill activity trong tr ng thái này.ệ ố ể ạ
27. 27
3. Android – Application's Life Cycle
Life Cycle Methods
27
Method: onDestroy()
1. Đ c g i tr c khi activity b h y.ượ ọ ướ ị ủ
2. Đây là l i g i hàm cu i cùng mà activity nh n đ c.ờ ọ ố ậ ượ
3. Nó có th đ c g i vì activity đang k t thúc (hàmể ượ ọ ế finish() c aủ
activity đ c g i), ho c vì h th ng đang t m th i h y th cượ ọ ặ ệ ố ạ ờ ủ ự
th hi n t i c a activity đ ti t ki m không gian b nh .ể ệ ạ ủ ể ế ệ ộ ớ
• Ta có th phân bi t hai tình hu ng trên b ng cách dùngể ệ ố ằ
ph ng th cươ ứ isFinishing().
• H th ng có th kill activity trong tr ng thái này.ệ ố ể ạ
28. 28
3. Android – Application's Life Cycle
Life Cycle Methods
28
Killable States – các tr ng thái mà h th ng kill đ cạ ệ ố ượ
• Activity tr ng thái killable có th b h th ng k t thúcở ạ ể ị ệ ố ế b t cấ ứ
lúc nào sau khi ph ng th c tr v mà không th c thi thêmươ ứ ả ề ự
m t dòng l nh nào trong mã c a activityộ ệ ủ .
• Ba ph ng th cươ ứ onPause(), onStop(), và onDestroy() d n đ nẫ ế
tr ng tháiạ killable.
• onPause() là ph ng th c duy nh t đ m b o đ c g i tr cươ ứ ấ ả ả ượ ọ ướ
khi ti n trình b h y (killed) —ế ị ủ onStop() và onDestroy() có thể
không đ c g i.ượ ọ
• Do đó, ta nên dùng onPause() đ l u d li u c n gi l i (ch ngể ư ữ ệ ầ ữ ạ ẳ
h n các s a đ i c a ng i dùng).ạ ử ổ ủ ườ
29. As an aside…
Android Preferences
Preference là m t c ch g n nh đ l u tr và đ c các c pộ ơ ế ọ ẹ ể ư ữ ọ ặ key-value thu cộ
các ki u d li u c b n. Nó th ng đ c dùng đ l u các preferenceể ữ ệ ơ ả ườ ượ ể ư
c a ng d ng, ch ng h n nh l i chào m ng m c đ nh ho c m t fontủ ứ ụ ẳ ạ ư ờ ừ ặ ị ặ ộ
ch c n n p khi ng d ng đ c b t lên.ữ ầ ạ ứ ụ ượ ậ
G iọ Context.getSharedPreferences() đ đ c và ghi các giá tr .ể ọ ị
Gán tên cho t p preference c a mình n u ta mu n dùng chúng t i cácậ ủ ế ố ạ
component khác trong cùng m t ng d ng, ho c dùngộ ứ ụ ặ
Activity.getPreferences() không có tên đ dùng riêng cho activityể
đang g i.ọ
Ta không th chia s preference cho các ng d ng khác (tr khi dùng contentể ẻ ứ ụ ừ
provider).
29
3. Android – Application's Life Cycle
Life Cycle Methods
29
30. 30
3. Android – Application's Life Cycle
Example
Life Cycle
30
Example
ng d ng sau trình di nỨ ụ ễ
m t s tìnhộ ố
hu ng chuy nố ể
tr ng tháiạ
x y ra trong m t chuả ộ
trình s ng c aố ủ
m t activity đi nộ ể
hình.
LAYOUT
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myScreen"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff000000"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<EditText
android:id="@+id/txtColorSelect"
android:hint="Background color (red, green, blue)"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>
<TextView
android:id="@+id/txtToDo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000">
<!-- transparent -->
</TextView>
<Button
android:text=" Finish "
android:id="@+id/btnFinish"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
31. 31
3. Android – Application's Life Cycle
Example: Life Cycle
31
Code: Life Cycle Demo. Part 1
package es.demo;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
//GOAL: show the following life-cycle events in action
//protected void onCreate(Bundle savedInstanceState);
//protected void onStart();
//protected void onRestart();
//protected void onResume();
//protected void onPause();
//protected void onStop();
//protected void onDestroy();
32. 3232
3. Android – Application's Life Cycle
Example: Life Cycle
32
Code: Life Cycle Demo. Part 2
private LinearLayout myScreen;
private TextView txtToDo;
private EditText txtColorSelect;
private Button btnFinish;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myScreen = (LinearLayout) findViewById(R.id.myScreen);
txtToDo = (TextView) findViewById(R.id.txtToDo);
String msg = "Instructions: n "
+ "0. New instance (onCreate, onStart, onResume) n "
+ "1. Back Arrow (onPause, onStop, onDestroy) n "
+ "2. Finish (onPause, onStop, onDestroy) n "
+ "3. Home (onPause, onStop) n "
+ "4. After 3 > App Tab > re-execute current app n "
+ " (onRestart, onStart, onResume) n "
+ "5. Run DDMS > Receive a phone call or SMS n "
+ " (onRestart, onStart, onResume) n "
+ "6. Enter some data - repeat steps 1-5 n ";
txtToDo.setText(msg);
33. 33
Code: Life Cycle Demo. Part 3
txtColorSelect = (EditText) findViewById(R.id.txtColorSelect);
// you may want to skip discussing the listener until later
txtColorSelect.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,int after)
{
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
changeBackgroundColor(s.toString());
}
});
btnFinish = (Button) findViewById(R.id.btnFinish);
btnFinish.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
finish();
}
});
Toast.makeText(getApplicationContext(), "onCreate", 1).show();
}
33
3. Android – Application's Life Cycle
Example: Life Cycle
33
37. 37
3. Android – Application's Life Cycle
Example: Life Cycle
37
Code: Life Cycle Demo. Part 7
private static String MYPREFSID; //used in part 6
private static int actMode; //used in part 6
private void changeBackgroundColor (String theChosenColor){
// change background color
if (theChosenColor.contains("red"))
myScreen.setBackgroundColor(0xffff0000);
else if (theChosenColor.contains("green"))
myScreen.setBackgroundColor(0xff00ff00);
else if (theChosenColor.contains("blue"))
myScreen.setBackgroundColor(0xff0000ff);
else {
//reseting user preferences
clearMyPreferences();
myScreen.setBackgroundColor(0xff000000);
}
}
38. 3838
3. Android – Application's Life Cycle
Example: Life Cycle
38
Code: Life Cycle Demo. Part 8
/*
protected void onRestoreInstanceState(Bundle savedInstanceState)
This method is called after onStart() when the activity is being re-initialized
from a previously saved state.
The default implementation of this method performs a restore of any view state
that had previously been frozen by onSaveInstanceState(Bundle).
Ph ng th c này đ c g i sau onStart() khi activity đang đ c kh i t o l i tươ ứ ượ ọ ượ ở ạ ạ ừ
tr ng thái đã l u l i tr c đó. Cài đ t m c đ nh c a ph ng th c này khôi ph cạ ư ạ ướ ặ ặ ị ủ ươ ứ ụ
tr ng thái view đã đ c l u b i onSaveInstanceState(Bundle).ạ ượ ư ở
*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Toast.makeText(getBaseContext(),
"onRestoreInstanceState ...BUNDLING",
Toast.LENGTH_LONG).show();
}
39. 3939
3. Android – Application's Life Cycle
Example: Life Cycle
39
Code: Life Cycle Demo. Part 9
/*
protected void onSaveInstanceState(Bundle outState)
Called to retrieve per-instance state from an activity before being killed
so that the state can be restored in
onCreate(Bundle) or onRestoreInstanceState(Bundle)
(the Bundle populated by this method will be passed to both).
This method is called before an activity may be killed so that when it comes
back some time in the future it can restore its state. For example, if activity B
is launched in front of activity A, and at some point activity A is killed to
reclaim resources, activity A will have a chance to save the current state of
its user interface via this method so that when the user returns to activity A,
the state of the user interface can be restored via:
onCreate(Bundle) or onRestoreInstanceState(Bundle).
Ph ng th c này đ c g i tr c khi m t activity có th b kill sao cho khi nó quay l i nóươ ứ ượ ọ ướ ộ ể ị ạ
có th ph c h i tr ng thái c a mình. Ví d , khi activity A b h th ng kill đ l y tàiể ụ ồ ạ ủ ụ ị ệ ố ể ấ
nguyên, A s có c h i l u tr ng thái hi n hành c a giao di n ng i dùng b ng ph ngẽ ơ ộ ư ạ ệ ủ ệ ườ ằ ươ
th c này, đ khi ng i dùng quay l i activity A, tr ng thái c a giao di n ng i dùng cóứ ể ườ ạ ạ ủ ệ ườ
th đ c khôi ph c qua các ph ng th c onCreate(Bundle) ho cể ượ ụ ươ ứ ặ
onRestoreInstanceState(Bundle). (Đ i t ng Bundle mà ph ng th c này xây d ng s đ cố ượ ươ ứ ự ẽ ượ
truy n cho c hai ph ng th c khôi ph c đó)ề ả ươ ứ ụ
*/
40. 4040
3. Android – Application's Life Cycle
Example: Life Cycle
40
Code: Life Cycle Demo. Part 10
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Toast.makeText(getBaseContext(),
"onSaveInstanceState ...BUNDLING",
Toast.LENGTH_LONG).show();
} // onSaveInstanceState
}//LifeCycleDemo
41. 4141
3. Android – Application's Life Cycle
Example: Life Cycle
41
onCreate… onStart… onResume…
42. 42
3. Android – Application's Life Cycle
Example: Life Cycle
42
onPause… onStop… onDestroy…
After pressing “Back Arrow”
44. Application’s Life Cycle
44
Appendix
L u các thông tin tr ng thái khácư ạ
@Override
public void onCreate(Bundle savedInstanceState) {
... somevalue = savedInstanceState.getString(SOME_KEY);
...
}
...
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(SOME_KEY, "blah blah blah");
}
45. 4545
3. Android – Application's Life Cycle
Homework
Your turn!
EXPERIMENT 1.
1. Vi t m t ng d ng Android. (“PuraVida”) đ th nghi m các vòng đ iế ộ ứ ụ ể ử ệ ờ
khác nhau c a ng d ng.ủ ứ ụ
2. Layout t iạ main.xml c n có m t Button (text: “Finish”, id: btnFinish) vàầ ộ
m t EditText container (txt: “” , id: txtMsg).ộ
3. Dùng ph ng th c onCreate đ n i button và textbox v i ch ng trình.ươ ứ ể ố ớ ươ
Thêm dòng mã sau:
Toast.makeText(this, "onCreate", 1).show();
1. Ph ng th c click ch có m t l nh:ươ ứ ỉ ộ ệ finish(); dùng đ k t thúc ng d ng.ể ế ứ ụ
Thêm m t l nh Toast (t ng t nh trên) cho t ng event trong 6 eventộ ệ ươ ự ư ừ
còn l i. Đ đ n gi n, hãy dùng menu Source > Override/Implementạ ể ơ ả
Methods… c a Eclipseủ
2. T i c a s option, đánh d u các event sau: onStart, onResume, onPause,ạ ử ổ ấ
onStop, onDestroy, onRestart
(đ ý xem có bao nhiêu ph ng th cể ươ ứ onEvent… t i đó!!!)ạ
6.L u ch ng trình.ư ươ
Teaching notes
46. 4646
3. Android – Application's Life Cycle
Homework
Your turn!
EXPERIMENT 1 (cont.)
7. D ch và ch y ng d ng.ị ạ ứ ụ
8. Ghi l i chu i các message hi n th b i các l nh Toast.ạ ỗ ể ị ở ệ
9. Nh n nút FINISH. Quan sát chu i các tr ng thái.ấ ỗ ạ
10. Ch y l i ng d ngạ ạ ứ ụ
11. Nh n nút HOME c a emulator. Chuy n gì x y ra?ấ ủ ệ ả
• Click vào launch pad, tìm icon và quay l i ng d ng “PuraVida”. Chu iạ ứ ụ ỗ
message nào đ c hi n th ?ượ ể ị
• Click phím CALL c a emulator. ng d ng tr ng thái paused hayủ Ứ ụ ở ạ
stopped?
• Click phím BACK đ quay l i ng d ng.ể ạ ứ ụ
7. Long-tap vào nút HANG-UP. Chuy n gì x y ra?ệ ả
Teaching notes
47. 4747
3. Android – Application's Life Cycle
Homework
Your turn!
EXPERIMENT 2
16. Ch y emulator th hai.ạ ứ
1. Th c hi n m t voice-call t i emulator th nh t hi n v n hi n th ngự ệ ộ ớ ứ ấ ệ ẫ ể ị ứ
d ng c a b n. Chuy n gì x y ra? (yêu c u đ ng b th i gian th c)ụ ủ ạ ệ ả ầ ồ ộ ờ ự
2. G i m t text-message t i emulator th nh t (yêu c u không đ ng b -ử ộ ớ ứ ấ ầ ồ ộ
asynchronous attention request)
16. Vi t m t câu vào EditText box (“these are the best moments of my life….”).ế ộ
17. Ch y l i ng d ng. Chuy n gì x y ra đ i v i dòng text?ạ ạ ứ ụ ệ ả ố ớ
Teaching notes
48. 4848
3. Android – Application's Life Cycle
Homework
Your turn!
EXPERIMENT 3
Đ m b o tính b n v ng c a d li u (data persistency).ả ả ề ữ ủ ữ ệ
19. Thêm vào ph ng th cươ ứ onPause đo n sauạ
SharedPreferences myFile1 = getSharedPreferences("myFile1",
Activity.MODE_PRIVATE);
SharedPreferences.Editor myEditor = myFile1.edit();
String temp = txtMsg.getText().toString();
myEditor.putString("mydata", temp);
myEditor.commit();
• Thêm vào ph ng th cươ ứ onResume đo n sauạ
SharedPreferences myFile = getSharedPreferences("myFile1",
Activity.MODE_PRIVATE);
if ( (myFile != null) && (myFile.contains("mydata")) ) {
String temp = myFile.getString("mydata", "***");
txtMsg.setText(temp);
}
• Gi thì chuy n gì x y ra v i d li u đã nh p vào text box?ờ ệ ả ớ ữ ệ ậ
Teaching notes