网站上线 模板,做网站都有哪些费用,广州互联网公司排行榜,wordpress 升级 无法创建目录之前碰到的OOM问题#xff0c;终于很直白的呈现在我的眼前#xff1a;我尝试了MAT#xff0c;但是发现不怎么会用。直到今天终于发现了这个新工具#xff1a; 当我们的App中存在内存泄露时会在通知栏弹出通知#xff1a; 当点击该通知时#xff0c;会跳转到具体的页面终于很直白的呈现在我的眼前我尝试了MAT但是发现不怎么会用。直到今天终于发现了这个新工具 当我们的App中存在内存泄露时会在通知栏弹出通知 当点击该通知时会跳转到具体的页面展示出Leak的引用路径如下图所示 LeakCanary 可以用更加直白的方式将内存泄露展现在我们的面前。 以下是我找到的学习资料写的非常棒 1、LeakCanary: 让内存泄露无所遁形 2、LeakCanary 中文使用说明 AndroidStudio (官方)上使用LeakCanary 请移步 https://github.com/square/leakcanary Eclipse 上使用LeakCanary 请移步我的 https://github.com/SOFTPOWER1991/LeakcanarySample-Eclipse Android studio 自己弄的上使用LeakCanary也可以看这个 leakcanarySample_androidStudio 工程包括 LeakCanary库代码LeakCanaryDemo示例代码使用步骤 将LeakCanary import 入自己的工程 添加依赖 compile project(:leakcanary) 在Application中进行配置 public class ExampleApplication extends Application { ...... //在自己的Application中添加如下代码 public static RefWatcher getRefWatcher(Context context) { ExampleApplication application (ExampleApplication) context .getApplicationContext(); return application.refWatcher; } //在自己的Application中添加如下代码 private RefWatcher refWatcher; Override public void onCreate() { super.onCreate(); ...... //在自己的Application中添加如下代码 refWatcher LeakCanary.install(this); ...... } ..... } 在Activity中进行配置 public class MainActivity extends AppCompatActivity { ...... Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //在自己的应用初始Activity中加入如下两行代码 RefWatcher refWatcher ExampleApplication.getRefWatcher(this); refWatcher.watch(this); textView (TextView) findViewById(R.id.tv); textView.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { startAsyncTask(); } }); } private void async() { startAsyncTask(); } private void startAsyncTask() { // This async task is an anonymous class and therefore has a hidden reference to the outer // class MainActivity. If the activity gets destroyed before the task finishes (e.g. rotation), // the activity instance will leak. new AsyncTaskVoid, Void, Void() { Override protected Void doInBackground(Void... params) { // Do some slow work in background SystemClock.sleep(20000); return null; } }.execute(); } } 在AndroidMainfest.xml 中进行配置,添加如下代码 serviceandroid:namecom.squareup.leakcanary.internal.HeapAnalyzerServiceandroid:enabledfalse android:process:leakcanary / service android:namecom.squareup.leakcanary.DisplayLeakService android:enabledfalse / activity android:namecom.squareup.leakcanary.internal.DisplayLeakActivity android:enabledfalse android:icondrawable/__leak_canary_icon android:labelstring/__leak_canary_display_activity_label android:taskAffinitycom.squareup.leakcanary android:themestyle/__LeakCanary.Base intent-filter action android:nameandroid.intent.action.MAIN / category android:nameandroid.intent.category.LAUNCHER / /intent-filter /activity 转载于:https://www.cnblogs.com/ldq2016/p/6635783.html