• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package leakcanary
2 
3 import android.app.Activity
4 import android.app.Application
5 import leakcanary.internal.friendly.noOpDelegate
6 
7 /**
8  * Expects activities to become weakly reachable soon after they receive the [Activity.onDestroy]
9  * callback.
10  */
11 class ActivityWatcher(
12   private val application: Application,
13   private val reachabilityWatcher: ReachabilityWatcher
14 ) : InstallableWatcher {
15 
16   private val lifecycleCallbacks =
17     object : Application.ActivityLifecycleCallbacks by noOpDelegate() {
onActivityDestroyednull18       override fun onActivityDestroyed(activity: Activity) {
19         reachabilityWatcher.expectWeaklyReachable(
20           activity, "${activity::class.java.name} received Activity#onDestroy() callback"
21         )
22       }
23     }
24 
installnull25   override fun install() {
26     application.registerActivityLifecycleCallbacks(lifecycleCallbacks)
27   }
28 
uninstallnull29   override fun uninstall() {
30     application.unregisterActivityLifecycleCallbacks(lifecycleCallbacks)
31   }
32 }
33