Android Studio 插件

Android Studio 插件,第1张


认识并整理AndroidStudio的插件,这些插件能一定程度下减少工作量。

以下内容是我搜集到的常用的插件,并加上我自己对这些插件的理解,以及运用的场景和方法。

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,这两处不同的原因是AndroidStudio3.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 (须注册登录后下载)

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 Studiofile->setting->plugins , 输入 genymotion 并下载:

(4)下载后,初次导入 genymotion 时如图所示:

(5)再打开界面,如图所示:

作者:谢美玲

原文链接

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/992591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存