认识并整理AndroidStudio的插件,这些插件能一定程度下减少工作量。
以下内容是我搜集到的常用的插件,并加上我自己对这些插件的理解,以及运用的场景和方法。
1. Android ButterKnife Zelezny 1.1. 作用当你需要重复多次绑定layout的布局控件时,可以利用该插件轻松解决。
1.2. 安装步骤查找 file -> Settings -> Plugins ,在搜索框中搜索 ButterKnife Zelezny 后添加插件,如图所示:
(1)在 Gradle Script 中找到下图该文件并进入:
(2)找到 dependencies 并添加两行代码,如图所示:
代码为:
implementation'com.jakewharton:butterknife:8.8.1'
annotationProcessor'com.jakewharton:butterknife-compiler:8.8.1'
(3)再找如下图该文件并进入:
(4)找到 dependencies 并添加一行代码,如图所示:
代码为:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
(此处为8.4.0,而上面是8.8.1,这两处不同的原因是AndroidStudio3.0以后和Butterknife8.5以上会冲突,所以使用8.4)
(5)点击Sync Now进行配置:
(1)先在 layout 中布局,如下所示:
(2)在 MainActivity 中,将光标移至如图所示位置:
(3)同时按下Alt与Insert键,选择 Generate Butterknife Injections:
(4)出现下图界面,选择你需要绑定的控件:
(5)结果展示:
(使用起来非常简便快捷,不需要再重复的复制粘贴)
方便检查内存泄漏,比传统的使用dump内存后用MAT工具分析要更加简便。
2.2. 安装步骤无需安装。
2.3. 添加依赖库(1)找到下图该文件并进入:
(2)找到 dependencies 并添加两行代码,如图所示:
代码为:
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
(3)点击Sync Now进行配置:
检测过程主要分为两个部分:
监听 Activity 或者 Fragment 的销毁,并判断是否存在内存泄漏找到内存泄漏的对象的引用路径
(1)在 Application 中添加代码,如下所示:
public class ExampleApplication extends Application {
@Override
public void onCreate(){
super.onCreate();
if(!LeakCanary.isInAnalyzerProcess(this)){
//这是给 LeakCanary 来堆放分析的,不可以初始化应用
LeakCanary.install(this);
return;
}
return;
}
}
(2)LeakCanary 默认监控着 Activity 类
(3)当我们想自定义 LeakCanary 的监控对象时,则需要手动调用 watch 方法进行监控,如下所示:
先修改刚才的 ExampleApplication 类中的代码,代码如下所示:public class ExampleApplication extends Application {
@Override
public void onCreate(){
super.onCreate();
LeakCanaryWatcher.initialize(this);
}
}
再添加一个 LeakCanaryWatcher 类,代码如下所示:
public class LeakCanaryWatcher {
private static RefWatcher refwatcher;
public static void initialize(Application application){
if(!LeakCanary.isInAnalyzerProcess(application)){
refwatcher = LeakCanary.install(application);
}
}
private LeakCanaryWatcher(){
throw new IllegalStateException("Utility class");
}
public static void watch(Object n){
if(refwatcher != null){
refwatcher.watch(n);
}
}
}
2.5. LeakCanary 原理
(由于编程的经验不够,不太能非常细致的了解大牛们的原理解析,以下为自我理解的较为浅薄的原理,若有错误恳请指出)
(1)前提(JAVA中的四种引用)
强引用 | 创建对象时默认为强引用,当它存在时JVM(垃圾回收器)即使使用OOM(杀掉占用大量内存的进程)也无法回收强引用引用的对象 |
---|---|
软引用 | 描述有用但不是必需的对象,当内存不足的时候偶会被JVM回收该对象(很适合实现缓存:比如网页缓存、图片缓存…) |
弱引用 | 描述非必需对象,当JVM进行垃圾回收时,无论内存是否充足,都会被回收,该对象的生命周期比软引用更短 |
虚引用 | (基本不会用到)不影响对象的生命周期,主要用于跟踪对象被垃圾回收的活动,它必须要和引用队列关联使用 |
(2)原理总结:
① LeakCanary 实现内存泄漏的判断逻辑:
因为当 GC(垃圾回收:一种自动的存储器管理机制)触发时,系统会将当前引用对象存入队列中。所以可以使用弱引用包装当前销毁的 Activity 或者 Fragment 同时将它与本地的 ReferenceQueue 队列关联,以此观察 Activity 或者 Fragment 的销毁。若队列中不存在当前的引用对象,则该引用对象没有被回收。② LeakCanary 判断内存泄漏的过程:
根据上述背景,LeakCanary 会对队列判断是否存在当前观察的 Activity 或者Fragment 的引用对象。若第一次判断为不存在,则手动触发一次GC。再进行第二次判断,若依然不存在,则判定为出现了内存泄漏。 3.Genymotion 3.1. 作用针对 Android 运行时的模拟器,它的运行速度快,CPU 占用率低(仅占20%~30%),启用它时其他软件不受影响。
3.2. 安装步骤(1)下载下述东西:
genymotion.exe (须注册登录后下载)
VirtualBox.exe
(2)注册账号,网址为 Account Creation – Genymotion Android Emulator (记得要去邮箱里验证) 注册成功如下所示:
(3)将上述安装包进行安装(大多默认下一步就好了),注意记住它们安装的路径。完成后桌面上出现如下所示的图标:
(从上往下数,第一个用于打开 Genymotion 的界面,第二个基本不会用到,第三个用于导入不同版本的安卓模拟器设备)
(4)右击第三个图标,选择 “属性” ,进入 “兼容性” 界面,勾选“以兼容模式运行这个程序”(选择选项依据电脑情况):
(5)启动 Genymotion(第一个图标),完成登录(账户密码是第二步完成的),进入界面如下所示:
(6)添加新的手机:
(选择一个你想要的安卓模拟器,然后点击NEXT)
(正在安装)
(7)安装完成,运行手机:
(8)此时已经大功告成安装好了,但是!!打开以后会报错!!!(如果不报错可以直接用)所以,下一节专门解决报错的问题。
3.3. 模拟器无法开启的解决办法(1)在启动模拟器时出现了 starting virtual device 的黑屏窗口。原因:VirtualBox 安装路径有问题,需要安装在指定的路径下。
(2)解决方案:进入 “ C:\Users\username\AppData\Local\Genymobile ” ,找到如所示的记事本:
(敲击Ctrl+F键快捷进入查找页面,输入 “setting” ,找到如图所示的路径,此路径为 VirtualBox 的安装路径)
(重新安装 VirtualBox ,在如下所示的地方粘贴刚才复制的安装路径)
(3)打开 Android Studio ,file->setting->plugins , 输入 genymotion 并下载:
(4)下载后,初次导入 genymotion 时如图所示:
(5)再打开界面,如图所示:
作者:谢美玲
原文链接
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)