Langsung ke konten utama

Android Tutorial: Use LeakCanary to detect memory leaks

Overview

The memory leak can be a headache to detect and to resolve, small memory leaks can be hidden and may be seen after a long usage of the application and hunting memory leaks is not a simple task.
In this tutorial we will create a leaked application and we will use the LeakCanary library to detect the memory leak.

Step 1: add the LeakCanary dependency to the application

Modify the app/build.gradle to add the LeakCanary dependency as follows:

Step 2: Extend and configure the Application class

We need to call LeakCanary.install in onCreate method:

Step 3: Create a leaked activity

For this we will create a singleton class that saves the context:

Then, the main activity (leaked one), will use the singleton and then we'll go to a new activity:

Then, in the new activity we'll call System.gc to force the garbage collector in order to accelerate the analysis.

Step 4: Retrieve the analysis result

A nice notification can be shown:

The result can be retrieved from logcat:

Source code

Complete source code of the sample can be found in Github.
Complete documentation of LeakCanary can be found in the following links:
https://corner.squareup.com/2015/05/leak-canary.html
https://github.com/square/leakcanary


Komentar

Postingan populer dari blog ini

Download file using Okio in Android

Okio is a library that complements java.io and java.nio to make it much easier to access, store, and process your data. Simply Okio is a modern I/O API for Java.  In this post, we will see how to download image or any file using Okio. Okio is component for OkHttp Coding Part Create a new project in Android Studio. Add following dependencies to your  app-level  build.gradle  file. compile 'com.squareup.okhttp3:okhttp:3.6.0' Don't forget to add the following permission in your AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Implementation Paste the following code in your Activity and Here, I have kept as MainActivity.java public void downloadImg(View view) { try { Request request = new Request.Builder() .url(imageLink) .build(); new OkHttpClient().newCall(request).enqueue(new Callback() { @Override public void onFail...

How Create a Accessibility Service in Android

Hello friends, In this Tutorial. In this post, I will show you how to use Accessibility Service for Android. Before that, we need to know What is Accessibility Service . Accessibility Service Here, I am taking an example for creating Virtual Service Button instead of Default Back Button. Project Structure: Create a new Project in Android Studio with the required Specifications. Codes: AndroidManifest.xml Don't forget to add the following permission in your manifest file. <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> Don't forget to add the following Lines in your manifest file to create service for your application. <service android:name=".MyService" android:label="@string/app_name" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <...

QR-Code Generator - Library

In this Post, I introduce my new Gradle Library. This Library is used to Generate QR Code Automatically for our specified input. How to Import the Library: Gradle: compile 'androidmads.library.qrgenearator:QRGenearator:1.0.0' Permission: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> How to use this Library: After importing this library, use the following lines to use this library. The following lines are used to generated the QR Code // Initializing the QR Encoder with your value to be encoded, type you required and Dimension QRGEncoder qrgEncoder = new QRGEncoder(inputValue, null, QRGContents.Type.TEXT, smallerDimension); try { // Getting QR-Code as Bitmap bitmap = qrgEncoder.encodeAsBitmap(); // Setting Bitmap to ImageView qrImage.setImageBitmap(bitmap); } catch (WriterException e) { Log.v(TAG, e.toString()); } Save QR Code as Image // Save with location, value, bitmap returned and type of Image(JPG/PNG). QRGSaver.save(s...