自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 AutoService源码解析

在JDK 1.5之后,java提供了对注解的支持,这些注解与普通代码一样,在运行期间发挥作用。在JDK 1.6中实现了JSR-269规范,提供了一组插入式注解处理器的标准API在编译期间对注解进行处理,可以看作是一组编译器的插件,可以读取/修改/添加抽象语法树中的任意元素。在Android模块开发之APT技术介绍了自定义注解处理器的一些知识,自定义注解处理器注册才能被Java虚拟机调用,在上面...

2019-03-01 15:27:19 2365

原创 一点点入坑JetPack:LiveData篇

正文当然不想听我瞎bb的,可以直接官方文档。如果想图个乐,顺便了解了解新技术。那欢迎光临红...,男宾一位,里边请!一、概况官网:LiveData是一个可观察的数据持有者类。与常规observable不同,LiveData是生命周期感知的。从官方文档上我们可以看到俩个关键词:可观察、生命周期感知。简单来说,Google给我们提供了一个可以被观察的,并且拥有生命周期感知能力的类。...

2019-03-01 15:22:51 560

原创 android之进程和应用程序的生命周期

在大多数情况下,每个Android应用程序都在自己的Linux进程中运行。当需要运行某些代码时,将为应用程序创建此过程,并且该过程将一直运行,直到不再需要它为止,并且 系统需要回收其内存以供其他应用程序使用。应用程序的生命周期不是由应用程序直接控制的和大家想的不太一样,android的应用程序进程的生命周期并不是由它自己本身控制的。它是由系统通过应用程序正在运行的程序中的...

2019-03-01 15:20:26 390

原创 Fresco架构设计赏析

本文是Fresco源码分析系列的开篇,主要分析Fresco的整体架构、各个组成模块的功能以及图片加载流程,希望通过本文可以对Fresco的整体框架设计有一个大概的了解,也为后续更为深入的分析打下基础。Fresco源码庞大,涉及的图片加载情况众多。本系列Fresco源码分析是沿着Fresco网络加载图片这个点展开的。Fresco的整体架构Fresco的组成结构还是比较清晰的,大致如下...

2019-03-01 15:15:40 289

原创 个人自用总结的Android模块化架构模板

模板项目链接ArchitectureSample如果大家觉得有什么问题或者建议,欢迎提issue,这个工程我也会不断改进,虽然比不上大公司、大牛的那些NB架构,但自己不断学习改进也是一种进步吧。声明一下:这个工程只是提供一种架构设计思想,并不像能那些NB框架一样开箱即用。Android应用模块化开发说明1. 组件化与模块化对于组件化和模块化,我的理解是:组件:指的是单一...

2019-03-01 15:13:39 432

原创 Android-setContentView与findViewById源码解析

当我们给Activity设置布局时,都是直接调用setContentView来完成的,但具体Android是怎么把布局加载到window,又是怎么通过findViewById获取view对象的,我们可能并没有太关心,下面就结合源码来分析下这个过程。Android setContentView打开Activity的源码发现,setContentView有三个重载方法,public voi...

2019-02-28 15:39:33 433

原创 2019 这一年似乎我不再是了程序员了

泡了一杯茶,打算放松放松,写几个故事,故事真假,由你定先写一下技术成长:通过测试驱动开发,对自己思维逻辑有很大的提高,学会编写运用自动化测试 一周一个版本的安卓版本维护,迭代维护了20几个版本 今年前端方面 编写了一个完整商用的pc-web版和H5版本写写生活方面吧1. 稳定 to 不稳定年初过后,公司不大不小,也算是能发一个月年终奖的公司,在赚大钱的想法一出来,随着部门几乎...

2019-02-27 20:23:44 286

原创 Android 绘制view时的Measure过程

1、MeasureSpec 的理解MeasureSpec中的值是一个整型(32位)将size和mode打包成一个Int型,其中高两位是mode,后面30位存的是size注:-1 代表的是EXACTLY,-2 是AT_MOSTUPSPECIFIED : 父容器对于子容器没有任何限制,子容器想要多大就多大EXACTLY: 父容器已经为子容器设置了尺寸,子容器应当服从这些边界,...

2019-02-27 20:20:27 200

原创 Android ClassLoader机制

传统Jvmjava虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Ini...

2019-02-27 20:17:20 206

原创 AccessibilityService+OpenCV实现微信7.0.0抢红包插件

引言提起AccessibilityService首先想到的肯定是抢红包插件。没错,目前基本上抢红包插件分为两类:root和免root,而免root的红包插件全是基于AccessibilityService。随着AccessibilityService的广泛应用,现今已经有比较多的方法可以防御基于AccessibilityService实现的自动化插件了。有兴趣的朋友可以参考这篇文章:红包外挂史...

2019-02-27 20:15:18 804 1

原创 效率提升百分之四十,AS模板也太好用了吧

CV 工程师你好,以下内容会让你感觉到不适,慎入! 在平时的开发工作中,我们经常将一个地方的代码,复制粘贴到另外一个地方,俗称搬砖,搬砖搬多了,作为一个资深的挨踢民工,难免会总结一些提高生产力的搬砖经验Android Studio 模板是个提高生产力的好东西,使用过 MVPArms 的朋友,都应该使用过我提供的配套模板,使用该套模板,一键即可生成整个页面需要的所有文件,甚至还可...

2019-02-27 15:42:18 254

原创 深入JVM:(六)常用JVM配置参数

一、Trace跟踪参数-verbose:gc:输出虚拟机中GC的详细情况-XX:+PrintGC:与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名-XX:+PrintGCDetails: 打印GC详细信息PrintGCDetails.png-XX:+PrintGCTimeStamps:打印GC时间戳-XX:+TraceClas...

2019-02-25 15:08:56 227

原创 深入JVM:(五)内存分配与回收策略

一、对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。 老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC...

2019-02-25 15:05:56 192

原创 深入JVM:(四)垃圾收集器

一、Serial收集器这个收集器是一个单线程的收集器。在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。(Stop The World) 直到现在为止,它依然是虚拟机运行在Client模式下的默认新生代收集器。它也有着优于其他收集器的地方:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自...

2019-02-25 15:04:25 181

原创 深入JVM:(三)垃圾回收算法

一、哪些内存需要回收引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的引用计数算法(Reference Counting)的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法。但是Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互...

2019-02-25 15:03:14 179

原创 深入JVM:(二)内存溢出

一、Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。/** * VM Options: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError */public static class OOMO...

2019-02-25 15:01:12 196

原创 深入JVM:(一)内存区域

一、Java内存区域运行时数据区Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间   程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要...

2019-02-25 14:59:14 281

原创 Android组件化——SXRecyclerView

简介前段时间封装了一个RecyclerView相关的库,叫做SXRecyclerView。该库包含了很多常用的功能,包括触摸反馈效果、点击事件、长按事件、多选功能、HeaderAndFooter、PinnedHeader等等。在做应用开发的时候直接使用这样一个组件能很快的实现相关功能,提高开发的效率。SXRecyclerView的实现并不是直接引入原生的RecyclerView,而是抽取整...

2019-02-22 17:50:26 263

原创 Android:从源码角度来赏析Binder机制的优美

谈到android进程间通信,就不得不想到Binder,那么他到底是何方圣神呢?话不多说,咱们下面一起来解密一番! IBinder首先我们来看一下Binder的声明:public class Binder implements IBinder {...}哟,那么IBinder又是什么呢?public interface IBinder { int FI...

2019-02-22 17:48:26 345

原创 Android Monitor使用介绍

Android Studio 内置了四种性能监测工具Memory Monitor、Network Monitor、CPU Monitor、GPU Monitor,我们可以使用这些工具监测APP的状态,该文简单介绍下这些工具的使用Memory MonitorMemory Monitor工具主要是用来监测APP的内存分配情况,判断是否存在内存泄漏。连接设备,选择好要监测的APP,如图所示:...

2019-02-22 17:45:52 13504

原创 Android Fragment 的妙用 - 优雅地申请权限和处理 onActivityResult

前言Fragment,简称碎片,可以简单地认为它就是一个“控件”,更加具体一点就是“View控制器”。它自身有生命周期。在开发中,我们经常用到,再熟悉不过了。然而,Fragment 的一些巧妙引用,不知道你是否了解过?使用 Fragment 封装权限申请 使用 Fragment 优雅处理 onActivityResult Activity reCreate 的时候用来存储数据这篇文章...

2019-02-22 17:33:08 356

原创 Android事件传递、多点触控及滑动冲突的处理

基本概念所有Touch事件都会被封装MotionEvent, 包括Touch的类型、位置(相对屏幕的绝对位置,相对View的相对位置)、时间、历史记录以及第几个手指(多点触控)等; 事件有多种类型,常用的事件类型有:ACTION_DOWN,ACTION_UP,ACTION_MOVE,ACTION_CANCEL 等; 对事件的处理包括三类: 事件传递,dispatchTouchEven...

2019-02-22 17:31:17 379

原创 JsBridge源码分析

客户端、H5注册客户端在BridgeWebView的初始化方法中,添加了自定义的BridgeWebViewClient,在onPageFinished方法中,去加载WebViewJavascriptBridge.js文件(在assets目录下):@Overridepublic void onPageFinished(WebView view, String url) { s...

2019-02-21 16:34:59 369

原创 Android APP应用启动页白屏(StartingWindow)优化

前言StartingWindow 的处理方式:使用系统默认的 StartingWindow :用户点了应用图标启动应用,马上弹出系统默认的 StartingWindow(就是做动画的那个 Window) ,等应用加载好第一帧之后,StartingWindow 消失,显示应用第一帧,无缝衔接,体验还不错,这也是通常大部分 Android 应用的场景;比如大部分 Android 系统的自带应用...

2019-02-21 16:32:07 658

原创 Android 寻找极限编码的「快感」

 前言关于 Android Studio 一些配置,如果可以掌握下来,是能够很大限度得提高我们的工作效率,节省工作时间。注意:本文权当是一篇归类总结文章,里面引用了网上一些优秀文章,是本人阅读过之好觉得写得非常之好的,才贴出来的。一、个性化设置根据自己的喜好,去设置属于自己个性化的开发工具 ,就好像穿着自己喜欢的衣服去上班,带来的感受是不一样的,本来就枯燥无味的编码工作,...

2019-02-21 16:24:16 203

原创 Android进阶面试题讲解

这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正1.简述Activity的生命周期当Activity开始启动的时候,首先调用onCreate(),onStart(),onResume()方法,此时Activity对用户来说,是可见的状态当Activity从可见状态变为被Dialog遮挡的状态的时候,会调用onPause()方...

2019-02-21 15:11:49 205

原创 View事件传递机制

所谓点击事件的事件分发,其实就是对MotionEvent事件的分发过程。此过程由三个很重要的方法来共同完成:dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent。同一个事件序列:指的是从手指接触屏幕的那一刻起,到手指离开屏幕的那一刻结束,在这个过程中所产生的一系列事件,这个事件以down事件开始,中间含有数量不定的move事件,最终以up事...

2019-02-21 15:03:32 240

原创 AndroidStudio封装SDK的那些事

首先SDK是提供给别人调用的工具。所以常见的SDK都是以jar包,so库,aar包等方式导入APP项目中。然后提供一些公开的API供接入方调用。所以在Androidstudio中如果需要生成jar或者aar,就需要将module变成library。1、AndroidStudio生成library在这里介绍AndroidStudio两种生成library的方式。1.1、两种生成libra...

2019-02-20 17:21:11 262

原创 Android 中的 MVP:如何使 Presenter 层系统化?

Android 中的 MVP:如何使 Presenter 层系统化? MVP(Model View Presenter)模式是著名的 MVC(Model View Controller)的衍生物,并且是 Android 应用程序中管理表示层的最流行的模式之一。这篇文章首次发表于 2014 年 4 月,从那以后就一直备受欢迎。所以我决定更新它来解决人们心中的大部分疑虑,并将代码转换为...

2019-02-20 15:47:50 340

原创 请收下我的 20 个 Flutter 开源项目

你还在未Flutter 怎么写第一个项目发愁么,请大家收下我的新年祝福,20个Flutter 开源项目。感到有帮助的话,欢迎点个赞,我会继续未大家寻找资源的~项目名字 介绍 图片 GitClub-Flutter 极客日报的flutter版本 image FlutterExampleApps 基本Flutter应用程序,用于flut...

2019-02-20 15:38:24 1532

原创 IntentService源码解析

如果此时你对Service有些模糊可先简单浏览一下Andriod中各种服务首先看一下Google给的介绍 主要的内容就是:IntentService继承Service。异步处理请求,可以自己关闭自己。所有的任务由同一个线程完成。并且是串行执行的。 作为服务,所以其优先级比一般的线程要高。IntentService封装了HandleThread和handler。Ha...

2019-02-20 15:30:31 200

原创 Android程序员接私活完整攻略

接私活对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后跑滴滴一样,程序员私有时间接点活挣点钱不也很正常么,不过不要在上班时间就行,就跟你上班期间出去跑滴滴一样。当你竭尽全力想要去接私活的时候一定做过这样的事,百度搜索“程序员如何接私活”或者...

2019-02-20 15:27:55 14073 2

原创 Android关于热修复

热修复:热修复(也称热补丁、热修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。——维基百科目前的热修复框架:1.阿里Dexposed2.阿里AndFix -- native解决方案3.QQ空间--Dex插桩方案(大众点评的Nuwa参考其实现并开源)4.美团Robust...

2019-02-19 17:02:57 238

原创 Android内存泄漏定位、分析、解决全方案

为什么会发生内存泄漏内存空间使用完毕之后未回收, 会导致内存泄漏。有人会问:Java不是有垃圾自动回收机制么?不幸的是,在Java中仍存在很多容易导致内存泄漏的逻辑(logical leak)。虽然垃圾回收器会帮我们干掉大部分无用的内存空间,但是对于还保持着引用,但逻辑上已经不会再用到的对象,垃圾回收器不会回收它们。例如忘记释放分配的内存的。(Cursor忘记关闭等)。 应用不再...

2019-02-19 16:56:41 222

原创 RxAndroid常用实践

RxJava/RxAndroid:是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。大家在项目中或多或少都可能用到这个库,本文我总结一下在我们的项目中常用的API。本文基于RxAndroid version 1.2Do操作符RxJava中有许多doXXX操作符。这些操作符一般是用来注册一个Action,这些Action会在XXX事件发生时调用。比如doOnS...

2019-02-19 16:52:14 403

原创 Android SDK全局热更新方案(全网唯一)

一、背景App热更新目前市面上成熟的商业热更新方案不少,有腾讯Bugly的Tinker封装,有阿里云的Sophix,也有游戏垂直行业的卓盟乐变。这些成熟方案,都有一个适用范围,即对App、对游戏整包进行热更新。前两者是和包名绑定在一起的,所以只适用于App热更新;而卓盟乐变则专注于游戏行业,可支持多渠道包热更新。其实最好的还是Sophix,可惜没有开源,虽有公开原理,但是公开资料里也透露了...

2019-02-19 16:50:22 5223

原创 你是否真的适合搞NDK开发?

最近很多人说,Android越来越不好找工作了,学习NDK开发会不会好点,今天就聊聊这个问题。是否应该选择学NDK?1.哪些场景下要用到NDK开发?跨平台的库,如FFmpeg, skip,weex,加固,防逆向签名校验图片压缩音视频解码OpenGL ES 高级特效热修复 andfix人脸识别 face++加密算法微信apk中的so文件  手机淘宝apk中s...

2019-02-19 16:38:14 207

原创 寒冬之中如何生存(浅谈Android进阶之路)

过去十年是移动互联网蓬勃发展的黄金期,相信每个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期、成长期、成熟期、现在来说已经进入饱和期。依然记得在 2010-2013 年期间,从事移动开发工作不知有多火,有工作 1-2 年经验的开发者薪资基本是上万,对招的人专业素质要求也不高,入门即可。从 2016 年底至今来看,局面而是另外一番景象,移动开发市场过度饱和,市场上充斥着太多初级开发者...

2019-02-18 16:51:56 467

原创 自定义View机制详解

Activity、Window、PhoneWindow、Decorview、Rootview关系应用的界面怎么显示出来的?Activity包含一个window,通过getwindow()可以得到抽象的Window类,代表一个窗口。window持有一个DecorView,是视图的根布局。Decorview继承自Framelayout,内部有垂直方向的Linearlayout。上面是标题栏Act...

2019-02-18 15:22:08 263

原创 Android-Handler机制

Handler是我们项目里常用的更新UI的方式了,如:子线程获取数据通过Handler.sendMessage()发送消息,在UI线程Handler.handleMessage()就会调用,执行相应处理,同时Handler机制也是我们面试常问到的内容,我们有必要做一个总结。什么是HanlerThread类?如果一个线程创建了Handler对象,同时也创建了Loop对象拥有MessageQu...

2019-02-18 15:08:48 188

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除