Make installed RefWatcher a singleton

- This change is needed for the incoming work on detecting leaks in instrumentation tests.
- This changes the semantic meaning of "install" from "add an activity watcher" to "keep a reference to the ref watcher and maybe add an activity watcher".
- As a result, we introduce AndroidRefWatcherBuilder#watchActivity (defaults true) so that an instance can be installed without watching activities.
- This also means user code will not need to keep the installed ref watcher instance around on their own (they can, especially for injection, but don't have to anymore)
3 files changed
tree: 693aa18dd4f6cace578df5c1b8d7609396b0e9af
  1. .buildscript/
  2. .github/
  3. assets/
  4. gradle/
  5. leakcanary-analyzer/
  6. leakcanary-android/
  7. leakcanary-android-no-op/
  8. leakcanary-sample/
  9. leakcanary-watcher/
  10. .gitignore
  11. .travis.yml
  12. build.gradle
  13. CHANGELOG.md
  14. checkstyle.xml
  15. gradle.properties
  16. gradlew
  17. LICENSE.txt
  18. README.md
  19. settings.gradle
README.md

LeakCanary

A memory leak detection library for Android and Java.

“A small leak will sink a great ship.” - Benjamin Franklin

Getting started

In your build.gradle:

dependencies {
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
  releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
}

In your Application class:

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    if (LeakCanary.isInAnalyzerProcess(this)) {
      // This process is dedicated to LeakCanary for heap analysis.
      // You should not init your app in this process.
      return;
    }
    LeakCanary.install(this);
    // Normal app init code...
  }
}

You're good to go! LeakCanary will automatically show a notification when an activity memory leak is detected in your debug build.

FAQ

License

Copyright 2015 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.