getApplicationContext (), getBaseContext (), getApplication (), getParent ()


94

อะไรคือความแตกต่างระหว่าง:

  1. getApplicationContext()
  2. getBasecontext()
  3. getApplication()
  4. getParent()

คุณสามารถอธิบายโดยละเอียดด้วยตัวอย่างง่ายๆได้หรือไม่?


1
โปรดไปที่stackoverflow.com/questions/1026973/…ที่กำหนดสิ่งเดียวกันเช่นกันdeveloper.android.com/reference/android/content/Context.html
Balban

คำตอบ:


33

getApplicationContext() บริบทของแอปพลิเคชันเชื่อมโยงกับแอปพลิเคชันและจะเหมือนเดิมตลอดวงจรชีวิต

getBasecontext()ไม่ควรใช้เพียงใช้Contextแทนสิ่งที่เกี่ยวข้องกับกิจกรรมและสามารถทำลายได้เมื่อกิจกรรมถูกทำลาย


16
สิ่งที่เกี่ยวกับ getApplication () และ getParent ()
Nikunj Patel

107

getApplicationContext ()บริบทของแอปพลิเคชันเชื่อมโยงกับ Applicaition และจะเหมือนเดิมตลอดวงจรชีวิต

ไม่ควรใช้getBasecontext ()เพียงแค่ใช้ Context แทนซึ่งเกี่ยวข้องกับกิจกรรมและอาจถูกทำลายเมื่อกิจกรรมถูกทำลาย

getApplication ()พร้อมใช้งานสำหรับกิจกรรมและบริการเท่านั้น แม้ว่าในการใช้งาน Android Activity and Service ในปัจจุบันgetApplication ()และgetApplicationContext () จะส่งคืนอ็อบเจ็กต์เดียวกัน แต่ก็ไม่มีการรับประกันว่าจะเป็นเช่นนั้นเสมอไป (ตัวอย่างเช่นในการใช้งานของผู้ให้บริการบางราย) ดังนั้นหากคุณต้องการคลาสแอปพลิเคชันที่คุณลงทะเบียนไว้ในไฟล์ Manifest คุณไม่ควรเรียกgetApplicationContext ()และส่งไปยังแอปพลิเคชันของคุณเนื่องจากอาจไม่ใช่อินสแตนซ์ของแอปพลิเคชัน (ซึ่งคุณเห็นได้ชัดจากกรอบการทดสอบ)

getParent ()ส่งคืนอ็อบเจ็กต์ของกิจกรรมหากมุมมองปัจจุบันเป็นเด็กกล่าวอีกนัยหนึ่งส่งคืนอ็อบเจ็กต์กิจกรรมที่โฮสต์มุมมองเด็กเมื่อถูกเรียกภายในเด็ก


16
ดังที่คุณได้กล่าวไปแล้วเราไม่ควรใช้ getBaseContext () ถ้ามันไม่สำคัญมากนักทำไมมันถึงอยู่ในการเข้ารหัสและข้อดีหลักของมันคืออะไร โปรดอธิบายฉันอย่างละเอียด
Pir Fahim Shah

getBaseContext () ควรใช้ในสถานการณ์ที่เฉพาะเจาะจงมาก มีคำอธิบายที่ดีมากที่นี่ - medium.com/@ali.muzaffar/…
lomza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.