请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

houcx

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1794|回复: 0

Android LeakCanary 内存检测Eclipes版本

[复制链接]

240

主题

242

帖子

1210

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1210
发表于 2016-12-6 13:02:51 | 显示全部楼层 |阅读模式
我们常用的Android端的内存检测工具LeakCanary,Git上面的官网版本是Android studio的版本,但是上面也有一些高手做好了eclipse的版本,这里是eclipse版本 下载地址。
下载地址
这里需要注意下,这个是Android sdk19的版本,就是4.4.2
需要的ADT版本要高于23.0.0
可以去Android SDK Manager里面更新。
这里给个国内SDK版本的镜像
Server: mirrors.neusoft.edu.cn
Port: 80
LeakCanary的library导入成功后,先建立个自己的application类
在修改配置文件AndroidManifest
Java
package com.example.leakcanarydemo;import com.squareup.leakcanary.LeakCanary;import android.app.Application;public class MyApp extends Application {    @Override    public void onCreate() {        super.onCreate();        LeakCanary.install(this);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.leakcanarydemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="21" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <application        android:name="com.example.leakcanarydemo.MyApp"        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <service            android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"            android:enabled="false"            android:process=":leakcanary" />        <service            android:name="com.squareup.leakcanary.DisplayLeakService"            android:enabled="false" />         <activity            android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"            android:enabled="false"            android:icon="@drawable/__leak_canary_icon"            android:label="@string/__leak_canary_display_activity_label"            android:taskAffinity="com.squareup.leakcanary"            android:theme="@style/__LeakCanary.Base" />        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
LeakCanary需要添加2个Service 和 一个Activity
在修改下application 的name属性就OK了;
测试内存泄露的代码:
MainActivity:
package com.example.leakcanarydemo;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {    private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button1);        button.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                start();            }        });    }    private void start() {        new Thread(new Runnable() {            @Override            public void run() {                try {                    Thread.sleep(20000);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }).start();    }}单机开始以后,旋转屏幕就会看到LeakCanary的提示了。


来自:http://blog.csdn.net/coder_giser/article/details/47219443

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|houcx ( 京ICP备15004793号  

GMT+8, 2019-11-15 21:27 , Processed in 0.060247 second(s), 30 queries .

Powered by houcx! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表