您的位置:首页 > 编程语言 > Java开发

Android内存泄露实时监测——LeakCanary/MAT等(Android Studio+Eclipse),测试

2016-07-24 10:40 423 查看
 Android自带的SysTrace与TraceView性能分析工具

> 性能检测和监测:

AndroidPerformanceMonitor  - https://github.com/markzhai/AndroidPerformanceMonitor
Watchdog - https://github.com/wojteklu/Watchdog
> 内存泄露LeakCanary,网易的Emmage测试框架,MAT,自动化框架

  MAT(内存分析工具)-- http://www.eclipse.org/mat/downloads.php
  LeakCanary已经开源一年多了,版本从1.3已经升级到1.4-beta2,不过还是有朋友没有试过使用。源码地址:https://github.com/square/leakcanary

推荐看:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0510/2860.html
当初也是看这篇才了解LeakCanary。这里再具体将使用步骤简单重现(Android Studio)。

 LeakCanary使用步骤

1、新开一个Android Studio工程;

2、在app的build.gradle中加上下面代码片段的最后两行。

释义:

(1)添加完成后,再Build-Clean Project,即可同步远程依赖到本地,在External Libraries中可以看到同步到本地的leakcanary的jar包;

(2)debugCompile是配置在debug模式下可用。releaseCompile配置主要是为了不修改代码,在release模式下LeakCanary不显示。

dependencies {  

    compile fileTree(dir: 'libs', include: ['*.jar'])  

    testCompile 'junit:junit:4.12'  

    compile 'com.android.support:appcompat-v7:24.1.1'  

    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'  

    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'  

}  

3、因为LeakCanary需要传递一个Application的对象,因此你需要有一个自定义的Application,比如MyApplication。如下:

package com.example.testproject;  

import android.app.Application;  

import com.squareup.leakcanary.LeakCanary;  

public class MyApplication extends Application {  

  

    @Override  

    public void onCreate() {  

        super.onCreate();  

        LeakCanary.install(this);  

  

    }  

}  

在AndroidManifest中,别忘记将Application名改为MyApplication。

现在,已经配置完成了。你已经可以使用了。

做个测试:

package com.example.testproject;  

  

import android.os.SystemClock;  

import android.support.v7.app.AppCompatActivity;  

import android.os.Bundle;  

import android.view.View;  

import android.widget.Button;  

  

public class MainActivity extends AppCompatActivity {  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

  

        Button btn =(Button)findViewById(R.id.button);  

        btn.setOnClickListener(new View.OnClickListener() {  

            @Override  

            public void onClick(View view) {  

                   doSome();  

            }  

        });  

    }  

  

  

    public void  doSome(){  

        new Thread(new Runnable() {  

            @Override  

            public void run() {  

                SystemClock.sleep(20*1000);  

            }  

        }).start();  

    }  

}  

运行代码,转屏,即可看到通知栏的LeakCanary通知。

如果eclipse的用户,可以参考:https://github.com/cheyiliu/leakcanary/tree/leakcannary_eclipse_project

  > Android主流开源自动化框架--http://xfenglin.com/a/12007046245.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: