วิธีใช้ onResume ()?


86

ใครช่วยยกตัวอย่างที่ใช้onResume()ใน Android ให้หน่อยได้ไหม

นอกจากนี้หากฉันต้องการเริ่มกิจกรรมใหม่เมื่อสิ้นสุดการเรียกใช้งานอื่นจะดำเนินการด้วยวิธีใด - onCreate()หรือonResume()?

และถ้าต้องการอัปเดตข้อมูลจะใส่อย่างไร onResume()?


onResume () ถูกเรียกทุกครั้งที่คุณกลับไปที่กิจกรรมจากการโทรหรืออย่างอื่น คุณสามารถแทนที่เมธอด onResume ได้เช่นเดียวกับ onCreate () และดำเนินการ
JibяaᴎKhaᴎ

ซึ่งอาจช่วยให้คุณเข้าใจวงจรชีวิตและแอป Android มากขึ้น
TronicZomB

2
ลำดับที่เรียกวิธีการเหล่านี้ได้อธิบายไว้ในเอกสารสำหรับนักพัฒนา Android: developer.android.com/reference/android/app/…
Michael

1
อย่าลืมเลือกคำตอบ ยินดีต้อนรับสู่ SO.
donfede

คำตอบ:


131

กิจกรรมใด ๆ ที่รีสตาร์ทมีวิธีการonResume () ที่ดำเนินการก่อน

หากต้องการใช้วิธีนี้ให้ทำสิ่งนี้:

@Override
public void onResume(){
    super.onResume();
    // put your code here...

}

72

OnCreate()การเริ่มต้นใหม่ของแอปจะเรียก

อย่างต่อเนื่อง app OnResume()เมื่อมันถูกหยุดชั่วคราวจะเรียก จากเอกสารอย่างเป็นทางการที่https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycleนี่คือแผนภาพของวงจรชีวิตของกิจกรรม

วงจรชีวิตของกิจกรรม Android จาก https://developer.android.com/images/activity_lifecycle.png บน https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


1
ใช้ไฮเปอร์ลิงค์เพื่อให้ลิงค์
Manoj Fegde

บางครั้งลิงค์ก็ให้พร็อบ ไม่รู้ทำไม
Viswanath Lekshmanan

2
ฉันไม่แนะนำให้เรียกใช้วิธีการใด ๆ ที่เป็นส่วนหนึ่งของวงจรชีวิตของกิจกรรมด้วยตนเอง :) ซึ่งอาจทำให้เกิดปัญหามากมาย
Cata

1
@Cata ฉันถือว่า Viswanath หมายความว่าจะมีการเรียกวิธีการและฉันได้อัปเดตคำตอบตามนั้น
Mathieu K.

ฉันต้องการทราบว่า onResume ถูกเรียกก่อน onCreate today!
mdre

28

วิธีที่ดีที่สุดในการทำความเข้าใจคือการลบล้างเมธอด LifeCycle ทั้งหมดในกิจกรรมของคุณและวางเบรกพอยต์ (หากตรวจสอบในโปรแกรมจำลอง) หรือ Log in แต่ละวิธี คุณจะได้รู้ว่าคนไหนถูกเรียกเมื่อไหร่

เช่นเดียวกับสปอยเลอร์onCreate()จะถูกเรียกก่อนจากนั้นหากคุณหยุดกิจกรรมชั่วคราวโดยไปที่หน้าจอหลักหรือเปิดกิจกรรมอื่นonPause()จะถูกเรียก หากระบบปฏิบัติการทำลายกิจกรรมในระหว่างนี้onDestroy()จะถูกเรียก หากคุณเปิดใช้งานแอปต่อและแอปถูกทำลายไปแล้วonCreate()จะถูกเรียกหรือไม่เช่นonResume()นั้นจะถูกเรียก

แก้ไข: ฉันลืมเกี่ยวกับมันได้รับการเรียกก่อนonStop()onDestroy()

ทำแบบฝึกหัดที่ฉันพูดถึงแล้วคุณจะเข้าใจดีขึ้น


1
ฉันมองหาคำอธิบายโดยละเอียดมาระยะหนึ่งแล้วสิ่งนี้ช่วยให้ฉันสร้างวงจรกิจกรรมแอพที่สมบูรณ์แบบได้จริงๆ ขอขอบคุณ.
Keno Clayton

คุณลืมเมื่อเริ่ม ()
Dory Daniel

9

คำตอบก่อนหน้านี้ส่วนใหญ่อธิบายได้ดีว่าทำไมถึงใช้งานได้ดีonResume()แต่ฉันอยากจะเพิ่มบางอย่างเกี่ยวกับการสร้างActivityไฟล์.

ฉันต้องการทราบว่าฉันต้องการเริ่มกิจกรรมใหม่เมื่อสิ้นสุดการ exectuion ของวิธีอื่นที่เรียกใช้ onCreate () หรือ onResume ()

คำตอบคือonCreate()อย่างไรก็ตามเมื่อตัดสินใจสร้างใหม่จริงคุณควรถามตัวเองว่าActivityต้องสร้างใหม่มากน้อยเพียงใด ถ้ามันเป็นข้อมูลในอะแดปเตอร์กล่าวว่าสำหรับรายชื่อแล้วคุณสามารถโทรnotifyDataChanged()ในadapterการ repopulate adapterและไม่ต้องวาดทุกอย่าง

นอกจากนี้หากคุณต้องการอัปเดตบางอย่างviewsแต่ไม่ใช่ทั้งหมดอาจมีประสิทธิภาพมากกว่าในการเรียกinvalidate()ใช้สิ่งviewที่ต้องอัปเดต สิ่งนี้จะวาดเฉพาะสิ่งเหล่านี้viewsและอาจทำให้แอปพลิเคชันของคุณทำงานได้ราบรื่นขึ้น ฉันหวังว่านี่จะช่วยคุณได้


5

onResume()เป็นหนึ่งในวิธีการที่เรียกว่าตลอดวงจรชีวิตของกิจกรรม onResume()เป็นคู่onPause()ที่เรียกเมื่อใดก็ตามที่กิจกรรมถูกซ่อนจากมุมมองเช่นถ้าคุณเริ่มกิจกรรมใหม่ที่ซ่อนมัน onResume()จะถูกเรียกเมื่อกิจกรรมที่ซ่อนอยู่กลับมาดูบนหน้าจอ

คำถามของคุณถามว่าใช้วิธีใดในการเริ่มกิจกรรมใหม่ onCreate()ถูกเรียกเมื่อสร้างกิจกรรมครั้งแรก ในทางปฏิบัติกิจกรรมส่วนใหญ่ยังคงอยู่เบื้องหลังผ่านชุดonPause()และการonResume()โทร กิจกรรมเป็นเพียงการ "เริ่มต้นใหม่" จริงๆโดยonRestart()หากหยุดก่อนโดยการโทรonStop()แล้วนำกลับมามีชีวิตอีกครั้ง ดังนั้นถ้าคุณไม่ได้จริงหยุดกิจกรรมกับonStop()มันมากที่สุด likley onResume()คุณจะใช้

อ่านเอกสาร Android ในลิงก์ด้านบนเพื่อทำความเข้าใจเกี่ยวกับความสัมพันธ์ระหว่างวิธีการดำเนินชีวิตที่แตกต่างกัน ไม่ว่าคุณจะจบลงด้วยวิธีการใดโดยใช้รูปแบบทั่วไปจะเหมือนกัน คุณต้องแทนที่วิธีการมาตรฐานและรวมรหัสของคุณเช่นสิ่งที่คุณต้องการให้กิจกรรมทำ ณ จุดนั้นในส่วนความคิดเห็น

@Override
public void onResume(){
 //will be executed onResume
}

onResume () ถูกเรียกเมื่อเราคลิกที่รายการในมุมมองหรือไม่?
rajiv_

1
การคลิกรายการไม่จำเป็นต้องเรียกว่า Resume เมธอด onResume จะถูกเรียกใช้หากมุมมองนั้นซ่อนอยู่และเรียกคืนหรือโหลดครั้งแรกก่อนที่จะสร้างอย่างสมบูรณ์
Rarw

แสดงข้อผิดพลาดไม่ได้โทรผ่านไปยัง super.onResume ()
sirmagid


2

คอตลิน

กิจกรรมใด ๆ ที่รีสตาร์ทมีวิธีการ onResume () ที่ดำเนินการก่อน

หากต้องการใช้วิธีนี้ให้ทำสิ่งนี้:

override fun onResume() {
        super.onResume()
        // your code here
    }

1

หลังจากกิจกรรมเริ่มต้นการเริ่มต้นใหม่ (onRestart () เกิดขึ้นก่อน onStart ()) หรือหยุดชั่วคราว (onPause ()) เรียกว่า onResume () เมื่อกิจกรรมอยู่ในสถานะ onResume () ผู้ใช้แอปจะพร้อมใช้งานกิจกรรม

ฉันได้ศึกษาวงจรชีวิตของกิจกรรมมาแล้วเล็กน้อยและนี่คือความเข้าใจของฉันเกี่ยวกับหัวข้อนี้: หากคุณต้องการเริ่มกิจกรรมใหม่ (A) เมื่อสิ้นสุดการดำเนินการของกิจกรรมอื่นอาจมีหลายกรณี

  1. กิจกรรมอื่น ๆ (B) ถูกหยุดชั่วคราวและ / หรือหยุดหรือถูกทำลายและกิจกรรม A อาจถูกหยุดชั่วคราว (onPause ()) ในกรณีนี้กิจกรรม A จะเรียก onResume ()

  2. กิจกรรม B ถูกหยุดชั่วคราวและ / หรือหยุดหรือทำลายกิจกรรม A อาจถูกหยุด (onStop ()) เนื่องจากหน่วยความจำในกรณีนี้กิจกรรม A จะเรียก onRestart () ก่อน, onStart () วินาทีจากนั้นเปิดดำเนินการต่อ ()

  3. กิจกรรม B ถูกหยุดชั่วคราวและ / หรือหยุดหรือถูกทำลายกิจกรรม A ถูกทำลายโปรแกรมเมอร์สามารถเรียก onStart () ด้วยตนเองเพื่อเริ่มกิจกรรมก่อนจากนั้นจึง onResume () เนื่องจากเมื่อกิจกรรมอยู่ในสถานะถูกทำลายกิจกรรมนั้นจะมี ไม่ได้เริ่มต้นและสิ่งนี้เกิดขึ้นก่อนที่กิจกรรมจะถูกลบออกอย่างสมบูรณ์ หากกิจกรรมถูกลบออกจะต้องสร้างกิจกรรมอีกครั้ง การเรียกใช้ onStart () ด้วยตนเองฉันคิดว่าเป็นเพราะถ้ากิจกรรมไม่เริ่มต้นและสร้างขึ้น onStart () จะถูกเรียกหลังจาก onCreate ()

หากคุณต้องการอัปเดตข้อมูลให้สร้างฟังก์ชันอัปเดตข้อมูลและวางฟังก์ชันไว้ใน onResume () หรือใส่ฟังก์ชัน loadData ไว้ใน onResume ()

ควรทำความเข้าใจวงจรชีวิตด้วยความช่วยเหลือของแผนภาพวงจรชีวิตของกิจกรรม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.