AutoService源码解析 在JDK 1.5之后,java提供了对注解的支持,这些注解与普通代码一样,在运行期间发挥作用。在JDK 1.6中实现了JSR-269规范,提供了一组插入式注解处理器的标准API在编译期间对注解进行处理,可以看作是一组编译器的插件,可以读取/修改/添加抽象语法树中的任意元素。在Android模块开发之APT技术介绍了自定义注解处理器的一些知识,自定义注解处理器注册才能被Java虚拟机调用,在上面...
一点点入坑JetPack:LiveData篇 正文当然不想听我瞎bb的,可以直接官方文档。如果想图个乐,顺便了解了解新技术。那欢迎光临红...,男宾一位,里边请!一、概况官网:LiveData是一个可观察的数据持有者类。与常规observable不同,LiveData是生命周期感知的。从官方文档上我们可以看到俩个关键词:可观察、生命周期感知。简单来说,Google给我们提供了一个可以被观察的,并且拥有生命周期感知能力的类。...
android之进程和应用程序的生命周期 在大多数情况下,每个Android应用程序都在自己的Linux进程中运行。当需要运行某些代码时,将为应用程序创建此过程,并且该过程将一直运行,直到不再需要它为止,并且 系统需要回收其内存以供其他应用程序使用。应用程序的生命周期不是由应用程序直接控制的和大家想的不太一样,android的应用程序进程的生命周期并不是由它自己本身控制的。它是由系统通过应用程序正在运行的程序中的...
Fresco架构设计赏析 本文是Fresco源码分析系列的开篇,主要分析Fresco的整体架构、各个组成模块的功能以及图片加载流程,希望通过本文可以对Fresco的整体框架设计有一个大概的了解,也为后续更为深入的分析打下基础。Fresco源码庞大,涉及的图片加载情况众多。本系列Fresco源码分析是沿着Fresco网络加载图片这个点展开的。Fresco的整体架构Fresco的组成结构还是比较清晰的,大致如下...
个人自用总结的Android模块化架构模板 模板项目链接ArchitectureSample如果大家觉得有什么问题或者建议,欢迎提issue,这个工程我也会不断改进,虽然比不上大公司、大牛的那些NB架构,但自己不断学习改进也是一种进步吧。声明一下:这个工程只是提供一种架构设计思想,并不像能那些NB框架一样开箱即用。Android应用模块化开发说明1. 组件化与模块化对于组件化和模块化,我的理解是:组件:指的是单一...
Android-setContentView与findViewById源码解析 当我们给Activity设置布局时,都是直接调用setContentView来完成的,但具体Android是怎么把布局加载到window,又是怎么通过findViewById获取view对象的,我们可能并没有太关心,下面就结合源码来分析下这个过程。Android setContentView打开Activity的源码发现,setContentView有三个重载方法,public voi...
2019 这一年似乎我不再是了程序员了 泡了一杯茶,打算放松放松,写几个故事,故事真假,由你定先写一下技术成长:通过测试驱动开发,对自己思维逻辑有很大的提高,学会编写运用自动化测试 一周一个版本的安卓版本维护,迭代维护了20几个版本 今年前端方面 编写了一个完整商用的pc-web版和H5版本写写生活方面吧1. 稳定 to 不稳定年初过后,公司不大不小,也算是能发一个月年终奖的公司,在赚大钱的想法一出来,随着部门几乎...
Android 绘制view时的Measure过程 1、MeasureSpec 的理解MeasureSpec中的值是一个整型(32位)将size和mode打包成一个Int型,其中高两位是mode,后面30位存的是size注:-1 代表的是EXACTLY,-2 是AT_MOSTUPSPECIFIED : 父容器对于子容器没有任何限制,子容器想要多大就多大EXACTLY: 父容器已经为子容器设置了尺寸,子容器应当服从这些边界,...
Android ClassLoader机制 传统Jvmjava虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Ini...
AccessibilityService+OpenCV实现微信7.0.0抢红包插件 引言提起AccessibilityService首先想到的肯定是抢红包插件。没错,目前基本上抢红包插件分为两类:root和免root,而免root的红包插件全是基于AccessibilityService。随着AccessibilityService的广泛应用,现今已经有比较多的方法可以防御基于AccessibilityService实现的自动化插件了。有兴趣的朋友可以参考这篇文章:红包外挂史...
效率提升百分之四十,AS模板也太好用了吧 CV 工程师你好,以下内容会让你感觉到不适,慎入! 在平时的开发工作中,我们经常将一个地方的代码,复制粘贴到另外一个地方,俗称搬砖,搬砖搬多了,作为一个资深的挨踢民工,难免会总结一些提高生产力的搬砖经验Android Studio 模板是个提高生产力的好东西,使用过 MVPArms 的朋友,都应该使用过我提供的配套模板,使用该套模板,一键即可生成整个页面需要的所有文件,甚至还可...
深入JVM:(六)常用JVM配置参数 一、Trace跟踪参数-verbose:gc:输出虚拟机中GC的详细情况-XX:+PrintGC:与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名-XX:+PrintGCDetails: 打印GC详细信息PrintGCDetails.png-XX:+PrintGCTimeStamps:打印GC时间戳-XX:+TraceClas...
深入JVM:(五)内存分配与回收策略 一、对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。 老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC...
深入JVM:(四)垃圾收集器 一、Serial收集器这个收集器是一个单线程的收集器。在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。(Stop The World) 直到现在为止,它依然是虚拟机运行在Client模式下的默认新生代收集器。它也有着优于其他收集器的地方:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自...
深入JVM:(三)垃圾回收算法 一、哪些内存需要回收引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的引用计数算法(Reference Counting)的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法。但是Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互...
深入JVM:(二)内存溢出 一、Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。/** * VM Options: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError */public static class OOMO...
深入JVM:(一)内存区域 一、Java内存区域运行时数据区Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要...
Android组件化——SXRecyclerView 简介前段时间封装了一个RecyclerView相关的库,叫做SXRecyclerView。该库包含了很多常用的功能,包括触摸反馈效果、点击事件、长按事件、多选功能、HeaderAndFooter、PinnedHeader等等。在做应用开发的时候直接使用这样一个组件能很快的实现相关功能,提高开发的效率。SXRecyclerView的实现并不是直接引入原生的RecyclerView,而是抽取整...
Android:从源码角度来赏析Binder机制的优美 谈到android进程间通信,就不得不想到Binder,那么他到底是何方圣神呢?话不多说,咱们下面一起来解密一番! IBinder首先我们来看一下Binder的声明:public class Binder implements IBinder {...}哟,那么IBinder又是什么呢?public interface IBinder { int FI...
Android Monitor使用介绍 Android Studio 内置了四种性能监测工具Memory Monitor、Network Monitor、CPU Monitor、GPU Monitor,我们可以使用这些工具监测APP的状态,该文简单介绍下这些工具的使用Memory MonitorMemory Monitor工具主要是用来监测APP的内存分配情况,判断是否存在内存泄漏。连接设备,选择好要监测的APP,如图所示:...