[Android Performance] Leak Canary: Công cụ check leak hiệu quả
Ở những phần trước mình đã đề cập tới các bạn nguyên nhân và một số lỗi lập trình có thể dẫn tới Memory Leak. Nhưng không phải chỉ có như vậy là bạn đã tránh được các lỗi về Memory Leak bởi con người thì luôn có thể mắc sai lầm, dù cho bạn có là lập trình viên dày dạn kinh nghiệm nhất. Vậy phải làm thế nào để có thể kiểm tra được xem ứng dụng của mình có bị Memory Leak hay không, chẳng lẽ lại phải ngồi nhìn lại từng class rồi từng dòng code sao? Điều đó là quá tốn công sức và nhiều khi là không thể đối với các ứng dụng lớn. Chính vì vậy chúng ta cần tới các công cụ để giúp chúng ta thực hiện công việc này và trong phần này mình sẽ giới thiệu tới các bạn một công cụ như vậy, đó là Leak Canary, một công cụ đơn giản và hiệu quả trong việc kiểm tra Memory Leak cho ứng dụng của bạn.
Các bài viết về Memory Leak khác:
- [Android Performance] Memory leak – Phần 1: Nguyên nhân và tác hại
- [Android Performance] Memory leak – Phần 2: Những lỗi cần tránh khi lập trình
Việc sử dụng Leak Canary rất đơn giản, bạn chỉ cần thêm vài dòng code vào ứng dụng của bạn, sau đó build lại và chạy thử các chức năng có trong ứng dụng. Nếu như ứng dụng của bạn bị memory leak tại 1 chức năng nào đó thì Leak Canary sẽ phát hiện và phân tích rồi chỉ ra cho bạn nguyên nhân gây ra memory leak. Thật là đơn giản và tiện lợi phải không nào 8-). Vậy hãy bắt tay vào việc sử dụng Leak Canary thôi nào.
I. Cài đặt Leak Canary
Như đã nói ở trước việc cài đặt Leak Canary rất đơn giản, các bạn chỉ việc làm theo các bước sau đây là xong:
Bước 1: Thêm thư viện Leak Canary
Để hoàn thành bước này bạn chỉ việc thêm đoạn code sau vào file build.gradle của project trong Android Studio
1 2 3 4 |
dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' } |
Chú ý 1: Nếu task dependencies đã có thì bạn chỉ việc thêm đoạn bên trong cặp dấu ngoặc nhọn mà không cần tạo thêm task dependencies nữa
Chú ý 2: Hiện tại Leak Canary đã có bản beta 2 của version 1.4 với một số cải tiến như tương thích tốt hơn với android M, fix lỗi build khi sử dụng proguard, … Nếu bạn muốn thử nghiệm những cải tiến này thì hãy sử dụng đoạn code sau nhé:
1 2 3 4 5 |
dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' } |
Bước 2: Khởi tạo Leak Canary trong Application
Hãy thêm câu lệnh sau vào phương thức onCreate() trong Application class của Project của bạn:
1 |
<span class="pl-smi">LeakCanary</span><span class="pl-k">.</span>install(<span class="pl-v">this</span>); |
Ví dụ:
1 2 3 4 5 6 7 |
public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } } |
Chú ý: Leak Canary yêu cầu được khởi tạo trong onCreate của Application class của project của bạn. Vì vậy nếu project của bạn chưa có Application class thì hãy tạo ngay bằng cách sau nhé:
- Tạo class có tên tùy ý như MyApplication chẳng hạn extends từ Application
- Đăng kí Application trong Manifest.xml của project với thuộc tính name là tên class vừa tạo:
II. Thử nghiệm Leak Canary
Phần này mình xin khất các bạn một thời gian nhé 😀
- Google+
- Wordpress