Friday, February 3, 2012

onStart, onCreate.... trình tự chạy của các lệnh

Biết mỗi activity đều implement các method như onCreate, onStart... nhưng có chắc bạn nắm chính xác trình tự chạy của chúng. Hãy làm 1 bài test nhỏ như sau để kiểm nghiệm:

Tạo 1 activity chính, 1 activity 2. Ta implement các method
onCreate
onStart
onResume
onPause
onStop
onDestroy

và đặt log ở tất cả các method này trong cả 2 activity.

Chạy chương trình , bấm nút chuyển từ Activity chính sang Activity 2. Kết quả thu được như sau:

D/AndroidRuntime(  468): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime(  468): CheckJNI is ON
D/AndroidRuntime(  468): --- registering native functions ---
I/ActivityManager(   59): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.aps.test/.OrderTestActivity }
D/AndroidRuntime(  468): Shutting down VM
D/dalvikvm(  468): Debugger has detached; object registry had 1 entries
I/AndroidRuntime(  468): NOTE: attach of thread 'Binder Thread #3' failed
D/dalvikvm(  436): GC_EXPLICIT freed 1421 objects / 94480 bytes in 1668ms
CHẠY CHƯƠNG TRÌNH
D/ACT1    (  436): onCreate
D/ACT1    (  436): onStart
D/ACT1    (  436): onResume

I/ActivityManager(   59): Displayed activity com.aps.test/.OrderTestActivity: 523 ms (total 523 ms)
I/ActivityManager(   59): Starting activity: Intent { cmp=com.aps.test/.Act2 }
BẤM NÚT CHUYỂN SANG ACTIVITY 2
D/ACT1    (  436): onPause
D/ACT2    (  436): onStart
D/ACT2    (  436): onResume

I/ActivityManager(   59): Displayed activity com.aps.test/.Act2: 391 ms (total 391 ms)
D/ACT1    (  436): onStop
W/KeyCharacterMap(  436): No keyboard for id 0
W/KeyCharacterMap(  436): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

THOÁT KHỎI ACTIVITY 2
D/ACT2    (  436): onPause
D/ACT1    (  436): onRestart
D/ACT1    (  436): onStart
D/ACT1    (  436): onResume
D/ACT2    (  436): onStop
D/ACT2    (  436): onDestroy 




THOÁT KHỎI CHƯƠNG TRÌNH (ACTIVITY 1)
D/ACT1    (  436): onPause
D/ACT1    (  436): onStop
D/ACT1    (  436): onDestroy


Thật quá rõ ràng ^^
PS: để lấy log ra file text trên linux: adb logcat -d > log

Code:
https://github.com/famihug/OrderCallWhenChangeActivity

No comments: