กิจกรรมและบริบทเหมือนกันหรือมีความแตกต่าง?
ฉันควรมีวิธีการส่งผ่านกิจกรรมเมื่อใดและบริบทเมื่อใด
กิจกรรมและบริบทเหมือนกันหรือมีความแตกต่าง?
ฉันควรมีวิธีการส่งผ่านกิจกรรมเมื่อใดและบริบทเมื่อใด
คำตอบ:
เท่าที่ฉันเข้าใจ:
บริบทคือวัตถุฐาน ดังนั้นทุกกิจกรรม เช่นเดียวกับแอปพลิเคชันมาจากบริบท ซึ่งหมายความว่าทุกกิจกรรมและทุกอย่างApplication
เป็นContext
;
จากdeveloper.android.com
กิจกรรม
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
และApplication
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Application
บริบทของแอปพลิเคชันจะคงอยู่ตราบเท่าที่แอปของคุณยังมีชีวิตอยู่ในขณะที่บริบทของกิจกรรมตายพร้อมกับกิจกรรมของคุณ (ไม่สามารถใช้ได้หลังจากonDestroy
กิจกรรมนั้น)
ดังนั้นหากคุณต้องการบริบทข้ามกิจกรรม (เช่นใน Singleton) คุณจะดีกว่าเมื่อใช้บริบทของแอปพลิเคชัน
โดยปกติแล้วในวิธีการของ Android Framework ที่คาดว่าบริบทจะไม่แตกต่างจากที่คุณส่งผ่าน แต่ควรตระหนักถึงMemoryLeaks เสมอหากคุณยังคงใช้การอ้างอิงถึงบริบทที่ยาวนาน
ดังที่คุณเห็นในเอกสาร Android :
คลาสกิจกรรมขยายจาก "ContextThemeWrapper" และคลาสนี้มาจาก "ContextWrapper" และคลาสนี้มาจาก "บริบท"
ใช่แล้วกิจกรรมขยายบริบท!