内存泄漏的检测;leakCanary
来源:互联网 发布:网络电视看珠江台了 编辑:程序博客网 时间:2024/05/22 12:47
一.导入依赖
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
二.新建一个类继承application并在清单文件中注册.初始化观察public class MyApplication extends Application { private static final String TAG = "MyApplication"; private RefWatcher ref; //创建一个静态方法,用于返回RefWatcher对象 public static RefWatcher getRefWatcher(Context context) { MyApplication myapplication= (MyApplication) context.getApplicationContext(); return myapplication.ref; } @Override public void onCreate() { super.onCreate(); //创建RefWatcher实例 ref= LeakCanary.install(this); }}三定义一个基类,在基类中监听,这样所有子类都可以监听到了
public class BaseFragment extends Fragment { private static final String TAG = "BaseFragment"; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //拿到检测对象 RefWatcher refWatcher = MyApplication.getRefWatcher(getContext()); //进行检测 refWatcher.watch(this); }}
四.新建一个实例,造成内存泄漏的情况
public class AppFragment extends BaseFragment { private static final String TAG = "HomeFragment"; private static Demo demo; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView textView=new TextView(getContext()); textView.setText("sdfs"); demo=new Demo(); return textView; } class Demo{ }}五.执行
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void go(View view) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.container,new AppFragment()) .commit(); }}<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.administrator.leakcanarydemo.MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="go"/> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout></LinearLayout>
0 0
- 内存泄漏的检测;leakCanary
- leakcanary 检测内存泄漏
- leakcanary 检测内存泄漏
- LeakCanary:检测所有的内存泄漏
- LeakCanary:检测所有的内存泄漏
- LeakCanary:检测所有的内存泄漏
- LeakCanary:检测所有的内存泄漏
- 检测内存泄漏的常见工具-LeakCanary
- Android内存泄漏检测-LeakCanary
- Android内存泄漏检测-LeakCanary
- 用 LeakCanary 检测内存泄漏
- 使用LeakCanary检测内存泄漏
- Android-LeakCanary检测内存泄漏
- android LeakCanary检测内存泄漏
- 检测内存泄漏——LeakCanary的使用
- Android开发:LeakCanary--检测所有的内存泄漏
- LeakCanary (Android 检测内存泄漏工具的使用)
- Android leakcanary内存泄漏检测和一般的解决方案
- jsp页面之间如何传递一个js对象
- jquery 点击查看更多箭头变化,文字变化,超出带滚动条。
- java发送带附件的邮件/附件图片显示在邮件内容中
- Java中的类型提升与转换
- java事件机制包括三个部分:事件、事件监听器、事件源
- 内存泄漏的检测;leakCanary
- Java中List与Array的转换
- 上传图片并生成缩略图
- Ubuntu(14.04)Kerberos LDAP配置
- 关于checkbox的全选和反选实例
- 【oracle学习】7.plsql光标和例外
- lua 字符串匹配
- 一个漂亮的输出MySql数据库表结构的PHP页面
- React Router 使用教程