认识并整理AndroidStudio的插件,这些插件能一定程度下减少工作量。
以下内容是我搜集到的常用的插件,并加上我自己对这些插件的理解,以及运用的场景和方法。
目录
1. Android ButterKnife Zelezny
1.1. 作用
1.2. 安装步骤
1.3. 添加依赖库
1.4. Butterknife zelezny基本使用(举例说明)
2. LeakCanary
2.1. 作用
2.2. 安装步骤
2.3. 添加依赖库
2.4. LeakCanary基本使用
2.5. LeakCanary 原理
3.Genymotion
3.1. 作用
3.2. 安装步骤
3.3. 模拟器无法开启的解决办法
1. Android ButterKnife Zelezny
1.1. 作用
当你需要重复多次绑定layout的布局控件时,可以利用该插件轻松解决。
1.2. 安装步骤
查找 file -> Settings -> Plugins ,在搜索框中搜索 ButterKnife Zelezny 后添加插件,如图所示:
1.3. 添加依赖库
(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,这两处不同的原因是AndroidStudio 3.0以后和Butterknife8.5以上会冲突,所以使用8.4)
(5)点击Sync Now进行配置:
1.4. Butterknife zelezny基本使用(举例说明)
(1)先在 layout 中布局,如下所示:
(2)在 MainActivity 中,将光标移至如图所示位置:
(3)同时按下Alt与Insert键,选择 Generate Butterknife Injections:
(4)出现下图界面,选择你需要绑定的控件:
(5)结果展示:
(使用起来非常简便快捷,不需要再重复的复制粘贴)
2. LeakCanary
2.1. 作用
方便检查内存泄漏,比传统的使用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进行配置:
2.4. LeakCanary基本使用
检测过程主要分为两个部分:
- 监听 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 (须注册登录后下载)
(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)再打开界面,如图所示: