一步步拆解 LeakCanary(3)

  • excludedRefs : 排除可以忽略的泄漏路径

    [本文来自:www.11jj.com]

  • [本文来自:www.11jj.com]

    接下来,我们一起来看一下 ActivityRefWatcher.install 方法

    ActivityRefWatcher.install((Application) context, refWatcher);

    public final class ActivityRefWatcher {

      /** @deprecated Use {@link #install(Application, RefWatcher)}. */
      @Deprecated
      public static void installOnIcsPlus(Application application, RefWatcher refWatcher) {
        install(application, refWatcher);
      }

      public static void install(Application application, RefWatcher refWatcher) {
        new ActivityRefWatcher(application, refWatcher).watchActivities();
      }

      private final Application.ActivityLifecycleCallbacks lifecycleCallbacks =
          new Application.ActivityLifecycleCallbacks() {
            @Override 
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
            }

            @Override 
            public void onActivityStarted(Activity activity) {
            }

            @Override 
            public void onActivityResumed(Activity activity) {
            }

            @Override 
            public void onActivityPaused(Activity activity) {
            }

            @Override 
            public void onActivityStopped(Activity activity) {
            }

            @Override 
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }

            @Override 
            public void onActivityDestroyed(Activity activity) {
              ActivityRefWatcher.this.onActivityDestroyed(activity);
            }
          };

      private final Application application;
      private final RefWatcher refWatcher;

      /**
       * Constructs an {@link ActivityRefWatcher} that will make sure the activities are not leaking
       * after they have been destroyed.
       */

      public ActivityRefWatcher(Application application, RefWatcher refWatcher) {
        this.application = checkNotNull(application, "application");
        this.refWatcher = checkNotNull(refWatcher, "refWatcher");
      }

      void onActivityDestroyed(Activity activity) {
        refWatcher.watch(activity);
      }

      public void watchActivities() {
        // Make sure you don"t get installed twice.
        stopWatchingActivities();
        application.registerActivityLifecycleCallbacks(lifecycleCallbacks);
      }

      public void stopWatchingActivities() {
        application.unregisterActivityLifecycleCallbacks(lifecycleCallbacks);
      }
    }

    install 来说,主要做以下事情

  • 创建 ActivityRefWatcher,并调用 watchActivities 监听 activity 的生命周期

  • 自媒体 微信号:11jj 扫描二维码关注公众号
    爱八卦,爱爆料。

    小编推荐

    1. 1

      会心(会心的意思)

      大家好,小豪今天来为大家解答会心以下问题,会心的意思很多人还不知道,现在让我们一起来看看吧!1、会心的意思是:领会别人没有明白表示的

    2. 2

      如何制作视频短片(如何制作视频短片全过程)

      大家好,小美今天来为大家解答如何制作视频短片以下问题,如何制作视频短片全过程很多人还不知道,现在让我们一起来看看吧!1、打开手机,在

    3. 3

      【节气里的大美中国•小满】今日小满,小得盈满,知足即安!

      风雨潇潇小满天四山蓑笠事新田今天迎来夏日的第二个骨气小满《月令七十二候集解》中说:“小满者,物致于此小得盈满。”此时,夏熟作物的籽

    4. 4

      压面机价格(压面机价格及图片商用)

      大家好,小乐今天来为大家解答压面机价格以下问题,压面机价格及图片商用很多人还不知道,现在让我们一起来看看吧!1、5. 飞利浦(PHILIPS)面条机

    5. 5

      自身特长和熟悉领域(熟悉特长怎么写)

      大家好,小伟今天来为大家解答自身特长和熟悉领域以下问题,熟悉特长怎么写很多人还不知道,现在让我们一起来看看吧!1、在描述自己的专业领

    6. 6

      安徽农金网上银行登陆(安徽农金网上手机银行)

      大家好,小乐今天来为大家解答安徽农金网上银行登陆以下问题,安徽农金网上手机银行很多人还不知道,现在让我们一起来看看吧!1、网络输入“

    7. 7

      取暖费发放标准文件(取暖费政策文件)

      大家好,小伟今天来为大家解答取暖费发放标准文件以下问题,取暖费政策文件很多人还不知道,现在让我们一起来看看吧!1、山西省冬季取暖补贴

    8. 8

      s31668是什么材质(s31653是什么材料)

      大家好,小娟今天来为大家解答s31668是什么材质以下问题,s31653是什么材料很多人还不知道,现在让我们一起来看看吧!1、06Cr17Ni12Mo2Ti (S31668) 属于国

    Copyright 2024.依依自媒体,让大家了解更多图文资讯!