1 package leakcanary.internal 2 3 import android.app.Activity 4 import androidx.fragment.app.Fragment 5 import androidx.fragment.app.FragmentActivity 6 import androidx.fragment.app.FragmentManager 7 <lambda>null8private val hasAndroidXFragmentActivity: Boolean by lazy { 9 try { 10 Class.forName("androidx.fragment.app.FragmentActivity") 11 true 12 } catch (ignored: Throwable) { 13 false 14 } 15 } 16 onAndroidXFragmentViewDestroyednull17internal fun Activity.onAndroidXFragmentViewDestroyed(block: () -> Unit) { 18 if (!hasAndroidXFragmentActivity) { 19 return 20 } 21 if (this is FragmentActivity) { 22 supportFragmentManager.registerFragmentLifecycleCallbacks( 23 object : FragmentManager.FragmentLifecycleCallbacks() { 24 override fun onFragmentViewDestroyed( 25 fm: FragmentManager, 26 fragment: Fragment 27 ) { 28 block() 29 } 30 }, true 31 ) 32 } 33 } 34