Activity และวงจรชีวิต
เรียนรู้ว่า Activity คืออะไร ทำความเข้าใจฟังก์ชันเรียกกลับของวงจรชีวิต Activity (onCreate, onStart, onResume, onPause, onStop, onDestroy) และใช้ ViewBinding
Activity และวงจรชีวิต เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 7 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 7 บทเรียน
กิจกรรมคืออะไร
กิจกรรมคือหน้าจอหนึ่งหน้าจอในแอป Android ของคุณ
- ทุกหน้าจอ (เข้าสู่ระบบ หน้าหลัก การตั้งค่า) ล้วนเป็นกิจกรรม
- กิจกรรมจัดการเค้าโครง (XML) และการโต้ตอบของผู้ใช้
- ประกาศไว้ใน AndroidManifest.xml
ลองนึกภาพว่ากิจกรรมเป็นสิ่งที่เทียบเท่ากับหน้าเว็บใน Android — แต่ละหน้าคือกิจกรรมหนึ่งรายการ
วงจรชีวิตของกิจกรรม
กิจกรรมจะผ่านสถานะวงจรชีวิตหลายขั้นขณะที่ผู้ใช้นำทางภายในแอป:
- สร้างแล้ว → เริ่มทำงานแล้ว → กลับมาทำงานแล้ว (มองเห็นและใช้งานอยู่)
- หยุดชั่วคราว (ถูกบดบังบางส่วน)
- หยุดทำงาน (ถูกบดบังทั้งหมด)
- ถูกทำลาย (กิจกรรมสิ้นสุดลง)
คุณเขียนทับเมธอดวงจรชีวิตเพื่อโต้ตอบกับการเปลี่ยนผ่านเหล่านี้
การเรียกกลับของวงจรชีวิต
การเรียกกลับหลักทั้งหกรายการของวงจรชีวิต:
onCreate()— กิจกรรมกำลังถูกสร้าง ให้ตั้งค่าเค้าโครงที่นี่onStart()— กิจกรรมเริ่มมองเห็นได้onResume()— กิจกรรมอยู่เบื้องหน้า ผู้ใช้โต้ตอบได้onPause()— ผู้ใช้กำลังออกจากหน้านี้ ให้บันทึกข้อมูลชั่วคราวonStop()— กิจกรรมไม่ปรากฏให้เห็นอีกต่อไปonDestroy()— กิจกรรมกำลังถูกทำลาย
ตัวอย่าง MainActivity
กิจกรรมขั้นต่ำที่มีการบันทึกข้อมูลวงจรชีวิต:
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d(TAG, "onCreate")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume — user is here")
}
override fun onPause() {
super.onPause()
Log.d(TAG, "onPause — saving state")
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "onDestroy")
}
}เหตุใดวงจรชีวิตจึงสำคัญ
ข้อผิดพลาดที่พบบ่อยจากการละเลยวงจรชีวิต:
- เล่นวิดีโอใน
onResumeแต่ลืมหยุดชั่วคราวในonPause— ทำให้แบตเตอรี่หมดเร็ว - ลงทะเบียนตัวรับฟังเซ็นเซอร์ใน
onCreateแต่ไม่ยกเลิกการลงทะเบียนในonDestroy— ทำให้เกิดหน่วยความจำรั่ว - ไม่บันทึกข้อมูลแบบฟอร์มใน
onPause— ผู้ใช้สูญเสียความคืบหน้าเมื่อมีสายโทรเข้า
การบันทึกสถานะ: onSaveInstanceState
เมื่อผู้ใช้หมุนโทรศัพท์ กิจกรรมจะถูกทำลายและสร้างขึ้นใหม่ สถานะส่วนติดต่อผู้ใช้ของคุณจะสูญหาย
บันทึกสถานะชั่วคราวใน onSaveInstanceState(bundle) และกู้คืนใน onCreate(savedInstanceState)
การบันทึกและกู้คืนสถานะ
คงข้อมูลไว้แม้มีการเปลี่ยนแปลงการกำหนดค่า:
class CounterActivity : AppCompatActivity() {
private var count = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_counter)
// Restore saved state after rotation
count = savedInstanceState?.getInt("count") ?: 0
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("count", count)
}
}สแต็กย้อนกลับ
Android จัดการสแต็กย้อนกลับของกิจกรรม:
- เมื่อเปิดกิจกรรมใหม่ ระบบจะนำกิจกรรมนั้นไปวางบนสแต็ก
- เมื่อกดปุ่มย้อนกลับ ระบบจะนำกิจกรรมด้านบนออกจากสแต็กและทำลายกิจกรรมนั้น
- กิจกรรมก่อนหน้าจะกลับมาทำงานโดยอัตโนมัติ
ด้วยเหตุนี้ คุณจึงไม่ควรเรียกใช้ finish() ด้วยตนเอง เว้นแต่ต้องการนำหน้าจอปัจจุบันออกจากสแต็กย้อนกลับโดยเฉพาะ
การเปลี่ยนแปลงการกำหนดค่า
การเปลี่ยนแปลงการกำหนดค่าใด ๆ (การหมุนหน้าจอ การเปลี่ยนภาษา การเชื่อมต่อแป้นพิมพ์) จะทำให้กิจกรรมถูกสร้างขึ้นใหม่โดยค่าเริ่มต้น
วิธีแก้ไขสมัยใหม่คือใช้ ViewModel ซึ่งจะคงอยู่แม้มีการเปลี่ยนแปลงการกำหนดค่าและเก็บข้อมูลของคุณอย่างปลอดภัย คุณจะได้เรียนรู้ ViewModel ในโมดูลสถาปัตยกรรม
ตรวจสอบความเข้าใจ
คุณควรตั้งค่าเค้าโครง (เรียกใช้ setContentView) ในเมธอดวงจรชีวิตใด
สรุป: กิจกรรมและวงจรชีวิต
ตอนนี้คุณเข้าใจกิจกรรมของ Android แล้ว:
- กิจกรรม = หน้าจอหนึ่งหน้าจอในแอปของคุณ
- วงจรชีวิต: onCreate → onStart → onResume → onPause → onStop → onDestroy
- บันทึกสถานะชั่วคราวใน
onSaveInstanceState - การหมุนหน้าจอจะทำลายและสร้างกิจกรรมขึ้นใหม่
- Android จัดการสแต็กย้อนกลับโดยอัตโนมัติ
ถัดไป: ออกแบบหน้าจอด้วยเค้าโครงและ View
คำถามที่พบบ่อย
บทเรียน “Activity และวงจรชีวิต” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Activity และวงจรชีวิต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 7 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Activity และวงจรชีวิต”
เรียนรู้ว่า Activity คืออะไร ทำความเข้าใจฟังก์ชันเรียกกลับของวงจรชีวิต Activity (onCreate, onStart, onResume, onPause, onStop, onDestroy) และใช้ ViewBinding คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 7 บทเรียน
บทเรียน “Activity และวงจรชีวิต” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างโครงการและไฟล์ Manifest
- Activity และวงจรชีวิต
- เค้าโครงและมุมมอง
- การจัดการข้อมูลที่ผู้ใช้ป้อน
- อินเทนต์และการนำทาง
- Fragment
- สิทธิ์และคำขอขณะทำงาน