เมื่อคุณเริ่มเขียนโปรแกรมในภาษาเช่น C ++ หรือ Java สิ่งแรกที่จะสอนคือวิธีการหลักจุดที่ระบบปฏิบัติการจะเรียกเมื่อเราเริ่มแอปพลิเคชันของเรา
ใน Android ไม่มีวิธีการหลักเช่นนี้ แต่มีหลายวิธีในกิจกรรมของเราที่ SSOO จะเรียกเมื่อเกิดขึ้น เหตุการณ์สำคัญ. ในบทนี้เราจะศึกษาในเชิงลึกว่าเหตุการณ์เหล่านั้นคืออะไรและทำงานอย่างไร วงจรที่สมบูรณ์ของกิจกรรม ของ Android เอกสารอย่างเป็นทางการ มีคำอธิบายอย่างละเอียดเกี่ยวกับหัวข้อนี้ที่นี่เราจะศึกษาองค์ประกอบที่สำคัญที่สุดพร้อมกับข้อผิดพลาดทั่วไปบางประการเมื่อจัดการ
วงจรชีวิตของ Android เป็นไปตามรูปแบบนี้:
เหตุการณ์ในวงจรชีวิต
- onCreate (Bundle)
- แสดงถึงช่วงเวลาที่ สร้างกิจกรรมแล้ว. โดยปกติวิซาร์ดจะสร้างวิธีนี้เมื่อสร้างกิจกรรมใหม่บน Android และเป็นที่ที่เราจะสร้างทุกสิ่งที่กิจกรรมต้องการ หากเราได้บันทึกข้อมูลกิจกรรมไว้ก่อนหน้านี้ในออบเจ็กต์ Bundle เราสามารถใช้ข้อมูลนั้นเพื่อสร้างใหม่ได้ ปกติเราจะไม่ใช้มัน
- onStart ()
- กิจกรรมจะดำเนินต่อไป อยู่บนหน้าจอแม้ว่าจะไม่จำเป็นต้องมองเห็นได้ ถ้าเรามาจากจุดหยุดเราจะไปที่ onRestart () ก่อน
- onRestart ()
- ก่อนหน้าถึง onStart () เมื่อเรามาจากการโทรไปที่ onStop ()
- onResume ()
- กิจกรรมจะเริ่มขึ้น ตอบสนองต่อการโต้ตอบ ผู้ใช้
- onPause ()
- กิจกรรมจะ หยุดการตอบสนอง เพื่อโต้ตอบกับผู้ใช้
- onStop ()
- กิจกรรมได้ไปอย่างสมบูรณ์ พื้นหลัง.
- onDestroy ()
- กิจกรรม มันจะถูกทำลาย และทรัพยากรของคุณถูกปล่อยออกมา
เมื่อเราจำเป็นต้องใช้วิธีใดวิธีหนึ่งเหล่านี้เราจะเพิ่มเข้าไปในกิจกรรมของเราด้วยโปรไฟล์เหล่านี้:
คลาสสาธารณะ MyActivity ขยายกิจกรรม {โมฆะป้องกัน onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); ... } โมฆะป้องกัน onStart () {super.onStart (); ... } โมฆะป้องกัน onRestart () {super.onRestart (); ... } โมฆะป้องกัน onResume () {super.onResume (); ... } โมฆะป้องกัน onPause () {... super.onPause (); } โมฆะป้องกัน onStop () {... onStop (); } โมฆะป้องกัน onDestroy () {... super.onDestroy (); }}
เป็นสิ่งสำคัญในการดูแลรักษา การเรียกเมธอด superclass เพื่อไม่ให้เกิดความประหลาดใจ งานของแต่ละเหตุการณ์ที่อยู่เหนือกิจกรรมของเราจะต้องได้รับการดูแล การเรียกนี้จะไปที่จุดเริ่มต้นของเหตุการณ์อินพุตและไปยังจุดสิ้นสุดของเหตุการณ์เอาต์พุต ด้วยวิธีนี้เราจะหลีกเลี่ยงความประหลาดใจเนื่องจากองค์ประกอบของกิจกรรมที่เราต้องการ แต่จะไม่อยู่ภายใต้การควบคุมของเราจะถูกสร้างขึ้นก่อนใช้งานและจะถูกทำลายในภายหลัง
เราไม่จำเป็นต้องเพิ่มเหตุการณ์ทั้งหมดสิ่งที่เราไม่ต้องการจะใช้การใช้งานเริ่มต้น วิธีการที่เรามักจะใช้ - และไม่แนะนำให้แตะต้องคนอื่นคือ onCreate, onPause และ onRestart
ความหมายของ onCreate นั้นชัดเจน: เป็นสถานที่ที่เราจะโหลดทรัพยากรที่เราต้องการมุมมองและสิ่งอื่น ๆ ที่เราต้องการ สำหรับผลลัพธ์วิธีเดียวที่เราจะเน้นคือ onPause เหตุผลในการหลีกเลี่ยง onStop และ onDestroy คือเราไม่สามารถควบคุมสิ่งเหล่านี้ได้ onPause จะทำงานเมื่อใดก็ตามที่แอปพลิเคชันออกมาจากเบื้องหน้าในขณะที่อีกสองโปรแกรมจะถูกเรียกใช้โดยระบบปฏิบัติการตามความต้องการของคุณ พวกเขาอาจไม่ถูกประหารชีวิต! สิ่งนี้ทำเพื่อหลีกเลี่ยงค่าใช้จ่ายในการสร้างกิจกรรมซ้ำแล้วซ้ำเล่าหากเราเปลี่ยนจากกิจกรรมไปยังเดสก์ท็อปและในทางกลับกันและระบบปฏิบัติการจะปลดปล่อยทรัพยากรที่ใช้หากต้องการเท่านั้นและไม่จำเป็นต้องเข้าร่วมทั้งหมด กระบวนการเปิด
นั่นหมายความว่าเราจะถือว่าแอปพลิเคชันจะตายหลังจากดำเนินการ onPause และเป็นของเรา โอกาสสุดท้ายในการบันทึกข้อมูล ที่เราต้องบันทึกและหยุดบริการที่เราใช้อยู่เช่นการระบุตำแหน่งทางภูมิศาสตร์ หากเราหยุดให้บริการสถานที่ที่เหมาะสมในการรีสตาร์ทคือ onRestart
ส่วนวิธีอื่น ๆ นั้นเราจะไม่ต้องใช้อะไรมาก กรณีทั่วไปที่เราจำเป็นต้องใช้คือเมื่อเรารวมไลบรารีของบุคคลที่สามเช่น Facebook หรือ Flurry ในกรณีเหล่านี้เราจะขอให้จับคู่วิธีการทำกิจกรรมของเรากับรหัสของคุณ ตัวอย่างเช่นในการลงทะเบียนเซสชัน Flurry เราจะถูกขอให้เริ่มเซสชันในเมธอด onStart
แนวคิดที่เป็นประโยชน์
- จำไว้ว่าแต่ละงานมีไว้เพื่ออะไร. คุณจะต้องใช้ onCreate เสมอและบ่อยครั้งที่คุณต้องใช้ onPause และ onResume เพื่อหยุดและเปิดใช้บริการที่มีผู้ใช้มากที่สุดอีกครั้ง
- อย่าแตะต้องเหตุการณ์อื่น ๆ ถ้าคุณไม่ต้องการมันอย่างชัดแจ้ง
- อย่าไว้วางใจ onStop และ onDestroy พวกเขาอาจไม่ถูกเรียก. บันทึกทุกสิ่งที่คุณต้องการใน onPause
- หลีกเลี่ยงการใช้ตัวแปรคงที่ที่ไม่ใช่ขั้นสุดท้าย. แอปยังสามารถโหลดได้เมื่อคุณกลับมาและแอปจะยังคงรักษาค่าที่ทิ้งไว้ หากคุณไม่มีทางเลือกอื่นนอกจากใช้ให้แน่ใจว่าได้รีเซ็ตค่าเมื่อคุณกลับไปที่พื้นหน้า
ข้อมูลมากกว่านี้ - คำแนะนำพื้นฐานสำหรับการเขียนโปรแกรมใน Android