Lazylifecycle Callbacks เป็นกรอบง่าย ๆ ในการเลื่อนงานที่ไม่จำเป็นของคุณและการเริ่มต้นออกจากเส้นทางการเปิดตัวหน้าจอในขณะที่ยังคงรับประกันการดำเนินการเดียวกันของการเรียกคืนชีวิต Android
การวาดครั้งแรก: เมื่อเปิดตัวแอป Play Store จะติดตามหมายเลขเปิดตัวเย็นอบอุ่นและร้อนแรง และทำได้โดยการวัดว่าแอปของคุณสามารถวาดเฟรมแรกของคุณได้เร็วแค่ไหน แอพสามารถเริ่มต้นผ่านตัวเรียกใช้งานการแจ้งเตือน deeplink ฯลฯ และแต่ละคนสามารถลงจอดผู้ใช้ในหน้าจอที่แตกต่างกัน แอพได้รับการพิจารณาว่าแสดงหน้าจอแรกเมื่อเครื่องหมาย "แสดง" แสดงบน logcat มันแสดงให้เห็นเสมอหลังจากการเรียกกลับขึ้นไปทั้งหมดเช่น onCreate, onstart และ onresume กลับมาแล้ว
ดังนั้นรหัสใด ๆ ที่ดำเนินการใน onCreate, onstart และ onresume และการเรียกกลับขึ้นไปอื่น ๆ (ไม่พูดถึงสิ่งต่าง ๆ เช่น Onpostresume) มีศักยภาพที่จะทำให้เวลาเปิดตัวจอไม่ดี ดังนั้นขอแนะนำให้ลบรหัสที่เลื่อนออกไปออกจากการเรียกกลับของ Android Lifecycle
แต่เราควรย้ายไปที่ไหน? เราสามารถทำสิ่งต่าง ๆ ตามความต้องการได้ แต่ไม่ใช่ทุกสิ่งที่สามารถเคลื่อนย้ายได้ ตัวอย่างเช่นคุณต้องการเริ่มต้นการเรียก N/W สำหรับการดึงภาพโดยเร็วที่สุด ที่นี่เราไม่ต้องการให้มันเริ่มต้นในขณะที่การแสดงผลของหน้าจอกำลังเกิดขึ้น แต่ช่วงเวลาที่หน้าจอแสดงผลพร้อมกับมุมมองตัวยึดตัวยึดเราต้องเริ่มต้นการโทร N/W-DB สมมติว่าคุณต้องการโหลดร่างอีเมลจากฐานข้อมูลก่อนอื่นเราต้องการแสดงหน้าจอ Compose แล้วเริ่มดึงร่าง
คำสั่งของการโทรกลับเหล่านี้ได้รับการดูแลตาม Android ในกิจกรรม onlazycreate () จะตามมาด้วย lazystart () ตามด้วย onlazyresume () ในแฟรกเมนต์ onlazycreate () จะตามด้วย onviewcreatedlazy (ดู) ตามด้วย onlazystart () ตามด้วย onlazyresume () สิ่งหนึ่งที่ต้องคำนึงถึงคือการโทรกลับที่ขี้เกียจทั้งหมดเกิดขึ้นหลังจากทริกเกอร์ของผู้จัดการวงจรชีวิตขี้เกียจพอใจ พวกเขาไม่ได้เชื่อมโยงกับการโทรกลับวงจรชีวิต Android
เพิ่มรหัสด้านล่างลงในการพึ่งพาไฟล์ build.gradle dependencies { implementation 'com.github.microsoft:LazylifecycleCallbacks:v1.0' }
LazyLifecycleCallbacks ในกิจกรรม (ต้องการ BaseActivity ) และให้การใช้งานเริ่มต้นของวิธีการonCreate()lifecycleManager.activate() ใน onResumelifecycleManager.deactivate() ใน onPause()supportsLazyLifecycleCallbacks() เป็น trueBaseActivity ของคุณสามารถแทนที่การโทรกลับวงจรชีวิตที่ขี้เกียจและใช้งานได้ดูรหัสด้านล่าง:
abstract class BaseActivity : AppCompatActivity (), LazyLifecycleCallbacks {
protected lateinit var lazyLifecycleManager : LazyLifecycleManager
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
lazyLifecycleManager = ViewBasedLazyLifecycleManager ( this )
}
override fun onResume () {
super .onResume()
lazyLifecycleManager.activate()
}
override fun onPause () {
super .onPause()
lazyLifecycleManager.deactivate()
}
override fun onLazyCreate () {}
override fun onLazyStart () {}
override fun onLazyResume () {}
override fun supportsLazyLifecycleCallbacks (): Boolean = false
}