由于第一次在简书写文章,如有写的不好的地方,望海涵。
以前总是需要什么就去找什么,自己一直没有总结的强烈意识,导致很多时候以前做过的东西,现在需要,又得花时间去查询。所以现在慢慢养成一种习惯同时为别人提供一种便利也是不错的方式。
这一篇讲解的是leakcanary,因为我们在开发编码过程中不可避免的会遇到一些内存泄露的情况,虽然有一些地方是我们故意为之,但还是有很多是在我们编写代码中产生的,但是只看代码是很难查起,所以在此介绍一款相对较好,也使用比较多的一款内存分析工具--leakcanary
对于这款工具的介绍各位就自己去网络上找一些资料看看吧,在此就不做过多介绍了,另外对于在AS上的使用,直接从github导入就能使用,具体操作可以去网上看看,在此就不做过多介绍,补充leakcanary在AS使用地址:LeakCanary介绍
在此介绍的是leakcanary在eclipse中的使用,引用工程可以在下面地址进行下载:LeakCanary依赖工程
1、添加依赖工程leakcanary-android
由于leackcanary-android工程依赖于leakcanary-analyzer,而leakcanary-analyzer工程又依赖于leakcanary-watch。所以三个工程包都需要添加

2、在application 初始化leakcanary
import com.squareup.leakcanary.LeakCanary;
import android.app.Application;
public class MyApplication extends Application{
@Override
public void onCreate() {
// TODO Auto-generated method stub
LeakCanary.install(this);
super.onCreate();
}
}
3、在AndroidMainfest.xml 中配置
<!-- 相关的服务与Activity -->
<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">
</activity>
<service
android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
android:enabled="false"
android:process=":leakcanary" />
<service
android:name="com.squareup.leakcanary.DisplayLeakService"
android:enabled="false" />
</application>
<!-- 写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4、这个时候直接运行测试工程,不停的跳Activity,出现内存泄漏,这个时候要等待一会哦,,你就会发现有通知栏,然后点击就可以看到内存泄漏堆栈关系了
当然了,也可以在BaseActivity或者BaseFragment的onDestroy里面对这个类进行监控。
/**
* 初始化内存泄露监测 applicaton里面的代码
*/
private void initRefWatcher() {
this.refWatcher = LeakCanary.install(this);
}
//BaseActivity或者BaseFragment的代码
@Override
protected void onDestroy() {
super.onDestroy();
RefWatcher refWatcher = MentorNowApplication.getRefWatcher(this);
refWatcher.watch(this);
}
网友评论