วันเสาร์ที่ 2 สิงหาคม พ.ศ. 2557

เริ่มต้นเขียน Android


: Android activity life-cycle

รูปนี้นำมาจาก www.edureka.in แล้วเพิ่มเติมส่วนที่กำลังมุ่งเน้นลงไป ใครที่หัดเขียน Android ใหม่ๆควรจะทำความรู้จักกับ Android activity life-cycle ให้ดีนะครับ เพราะมันคือกิจกรรมพื้นฐานที่เกิดขึ้นตลอดเวลาตั้งแต่เปิดแอพ (open application) ไปจวบกระทั่งปิดแอพ (destroy application) เลยทีเดียว

เราเรียกแต่ละหน้าของแอพว่า activity หรือกิจกรรม และกำหนดให้ว่าหนึ่งหน้านั้นคือหนึ่งกิจกรรม (1:1)

แต่ละกิจกรรม (activity) จะมีสถานะ (state) ที่อยู่ในสภาวะสมมติ หลักๆดังนี้ครับ
- starting
- running
- paused
- stopped
- destroyed

สภาวะสถานะสมมติดังกล่าวเกิดขึ้นอันเนื่องมาจากพฤติกรรมของคลาส (ที่เป็นลูกของคลาส Activity) เกิดการกระทำต่างๆนานา โดยทั่วไปแล้วดังนี้

- เมื่อเปิดเกมคุกกี้รัน (สมมติๆ) จะเกิด onCreate() >> onStart() >> onResume() จากนั้นจะเข้าสู่สถานะ running เมนูต่างๆจะปรากฏให้เห็น

- ขณะที่เล่นเกมอยู่ในสถานะ running จู่ๆแบตเตอรี่จะหมด เกิดกล่องแจ้งเตือนพลังงานเหลือน้อยเต็มที เจ้ากล่องที่ว่าจะบังคับให้ onPause() เข้าสู่สถานะ paused เกมจะถูกกล่องบังไว้ชั่วคราว (บังแค่กลางจอ) พอจอที่ว่าถูกปิดลง (เราปิดเองหรือเสียบไฟเลี้ยงมัน) จะเกิด onResume() เพื่อกลับไปยังสถานะ running ใหม่ เล่นเกมต่อได้เลย

- เล่นไปสักพักชักเบื่อ จึงกดปุ่มตรงกลางของโทรศัพท์ จะเกิด onPause() ทำให้อยู่ในสถานะ paused ตามด้วย onSaveInstaceState() เพื่อบันทึกการเล่นล่าสุด ก่อนจะ onStop() เพื่อยุติการเล่น (แต่หน่วยความจำของเกมในเครื่องยังคงอยู่) และเข้าสู่สถานะ stopped ในที่สุด

- ทีนี้ไม่มีอะไรทำ พลันเกิดอาการกระสันอยากเล่นเกมต่อจากที่ค้างไว้ ก็กดไอคอนมัน ทำให้เกิด onRestart() >> onStart() >> onResume() เข้าสู่สถานะ running เล่นเพลินไปสามวัน (เวอร์)

- กระทั่งกดปุ่มที่สาม (ปุ้มย้อนกลับ) จะทำให้เกิด onPause() อยู่ในสถานะ paused หยุดชั่วคราว onSaveInstanceSate() บันทึกค่า และ onStop() ยุติ จากนั้นเข้าสู่สถานะ stopped

- หรือแบตเตอรี่หมด (อุต๊ะ!) จะทำให้เกิด onPause() อยู่ในสถานะ paused และเข้าสู่สถานะ destroyed ทันที
(อ่าว!ไม่ save ที่เล่นมาสามวันหายหมด เพราะหน่วยความจำจะคืนให้ระบบหมดสิ้น เสียใจด้วยนะ อิอิ)

สรุป หัวใจของเรื่องนี้ก็คือวงจรชีวิตของเหล่าสถานะ (state) ที่ดำเนินอยู่ตลอดเวลาตั้งแต่เกิดจนตาย แต่ละกิจกรรม (activity) มีเหล่าสถานะเป็นของตัวเอง และแต่ละแอพประกอบไปด้วยหนึ่งหรือหลายกิจกรรม (ประกอบไปด้วยหนึ่งหน้าหรือหลายหน้า) ทั้งนี้ยังคงมีพฤติกรรม (onCreate(), onStart() ฯลฯ) อีกมากมายซึ่งคงจะได้ศึกษาต่อไป

โพสต์นี้ลาแล้วครับ สวัสดี

ไม่มีความคิดเห็น:

แสดงความคิดเห็น