Android 瘦身不反弹最佳实践 (mp.weixin.qq.com)
在网上随便搜索一下就能发现瘦身有好多方案,但是实践一下就能发现好多都不靠谱
by @code小生 2018-03-05 21:13 分享 查看详情
Android 自己开发的消息事件小项目DBus (mp.weixin.qq.com)
1、注册消息事件的类可以是任意类(可能别人的项目也是),不限定是Activity等特殊的类。
在使用时,保证register和unRegister一对方法成对调用。
by @code小生 2018-02-27 20:35 分享 查看详情
Android 消息机制(Looper Handler MessageQueue Message) (mp.weixin.qq.com)
上一篇我们介绍了LeakCanary工具用来分析内存泄漏以及谈了下几种常见内存泄漏的表现和解决方法。本篇内容我们来分析Android的消息机制。我们为什么要介绍Android的消息机制呢,因为Android系统本质上来说就是一个消息驱动的系统。
by @code小生 2018-02-27 20:34 分享 查看详情
Android开发之漫漫长途 番外篇——自定义View的各种姿势1 (mp.weixin.qq.com)
第六篇了,这一篇我们来看自定义View的各种姿势。前面几篇文章中我们介绍了Acitivity的启动流程以及生命周期,还介绍了Activity显示的各种原理。那么这篇文章呢,我们来实战一下。(读者可能看了好多关于Android Activity相关的知识,也看了View的实现原理。可是对于自定义View还是感觉隔着一层膜,那么今天我们试着捅破这层隔膜。)
by @code小生 2018-02-27 20:34 分享 查看详情
CompatWebView (mp.weixin.qq.com)
CompatWebView是为了解决WebView的JavaScriptInterface注入漏洞

漏洞介绍:CVE-2012-6636 CVE-2013-4710

官方说明:addJavaScriptInterface
by @code小生 2018-02-27 20:33 分享 查看详情
简述JVM基础(八):线程安全和锁优化 (mp.weixin.qq.com)
我们通过前面的学习,已经知道了工作内存和主内存的8大原子操作,以及Java线程的实现方式,和状态关系。我们清楚:

高效并发首先要保证并发的准备性,而后才是高效。
本篇还解答了如下问题:
by @code小生 2018-02-27 20:33 分享 查看详情
Android开发之漫漫长途 Ⅵ——图解Android事件分发机制(深入底层源码) (mp.weixin.qq.com)
系列第六篇了,接着上一篇说,在上一篇文章中我们上了一个小例子来自定义View,文章比较简单,阅读量几乎没有,有灌水的嫌疑,(实际上没有,每一篇文章我都是用心在写)。这一篇文章呢,我们来看一下Android事件的分发机制。关于这方面的知识大概已经被讲烂了。我本人也看了好多关于这方面优质的文章和博客。可以说是受益匪浅,但是可是总觉得没有掌握完全。所以我去看了关于底层源码的一些知识。然后在这里分享给大家。
by @code小生 2018-02-08 22:12 分享 查看详情
理想的程序员 (mp.weixin.qq.com)
我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有500万用户产品的后台主程。
by @code小生 2018-02-08 22:12 分享 查看详情
基于 zxing 的二维码扫描 (mp.weixin.qq.com)
现在的应用中二维码扫描已经成为一个应用必不可少的功能,现在大部分Android二维码扫描都是基于zxing和Zbar,这文章就来介绍一下基于zxing的二维码扫描。先看下效果图
by @code小生 2018-02-08 22:11 分享 查看详情
MVI 设计模式尝鲜(实现一个联网的天气查询Dome) (mp.weixin.qq.com)
Model-View-Intent是安卓最新的设计模式。它的灵感来自于于André Staltz的Cycle.js ,并且被 Hannes Dorfmann带到安卓世界。
by @code小生 2018-02-08 22:11 分享 查看详情
Android 一套完整的 Socket 解决方案 (mp.weixin.qq.com)
在上上周的时候,写了一篇文章:
在 Android 上,一个完整的 UDP 通信模块应该是怎样的?

文中介绍了在 Android 端,一个完整的 UDP 模块应该考虑哪些方面。当然了文中最后也提到了,UDP 的使用本身就有一些局限性,比如发送数据的大小有限制,属于不可靠协议,可能丢包。
by @code小生 2018-02-08 22:10 分享 查看详情
实现城市列表的排序及模糊查询 (mp.weixin.qq.com)
项目需求中有一个需求,是用户输入的地址进行智能匹配,包含拼音匹配跟文字匹配,下面先展示一下需要实现的效果
by @code小生 2018-02-08 22:09 分享 查看详情
技术分享 | 年终总结 (mp.weixin.qq.com)
本公众号下半年分享的技术文章分类总结,上半年已经总结过,没有看到的朋友,请点击 2017 | 我在 5 个月时间里分享了 98 篇文章 或者看下面的 github 的链接

https://github.com/Android-Mu/AndroidSourceCodeXS/blob/master/codeXiaoSheng17_end.md
by @code小生 2018-02-08 22:08 分享 查看详情
简述JVM基础(七): Java 内存模型与线程 (mp.weixin.qq.com)
我们通过前面的学习,已经知道了各个内存区域的分配等等。我们首先应该知道:

服务性能重要指标:每秒事务处理数
线程并发问题:阻塞、死锁
by @code小生 2018-02-08 22:08 分享 查看详情
Activity 显示之 ViewRootImpl的PreMeasure、WindowLayout、EndMeasure 等方法 (mp.weixin.qq.com)
终于到了我们的猪脚 ViewRootImpl 出场的时候了。ViewRootImpl 类比较复杂,如果要把这个类全部解释清楚那需要很多章节,并且该类涉及了许多其他知识,如Android进程间通信的Binder了,还有其他许多本文以及前文没有讲到的概念。所以我们只分析其中的一部分。
by @code小生 2018-02-08 22:08 分享 查看详情
理解 Android 硬件加速原理的小白文 (mp.weixin.qq.com)
硬件加速,直观上说就是依赖 GPU 实现图形绘制加速,同软硬件加速的区别主要是图形的绘制究竟是 GPU 来处理还是 CPU,如果是GPU,就认为是硬件加速绘制,反之,软件绘制。在 Android 中也是如此,不过相对于普通的软件绘制,硬件加速还做了其他方面优化,不仅仅限定在绘制方面,绘制之前,在如何构建绘制区域上,硬件加速也做出了很大优化,因此硬件加速特性可以从下面两部分来分析:
by @code小生 2018-02-08 22:07 分享 查看详情
程序员的五种不同寻常的特质 (mp.weixin.qq.com)
程序员身上有很多特质,用通俗点的话说,是“易黑体质”,但同时优秀程序员也有很多体质。因此,如果你认为自己缺少下面的某些品质,千万别往心里去。不是一时兴起才来探讨这些,其中的很多迹象来自于对其他程序猿的观察或阅读他们的代码。
by @code小生 2018-01-28 17:52 分享 查看详情
开除了没情商的“技术大神”后,整个团队都好起来了 (mp.weixin.qq.com)
人才是二十一世纪科技发展最重要的资源,但切勿为了某个天才顾此失彼。本文作者是来自加利福尼亚大学洛杉矶分校的软件工程师 Jonathan Solórzano-Hamilton。在文中, 他向读者讲述了,开除团队中的顶级工程师何以成为他们做出的最英明的决定。
by @code小生 2018-01-28 17:52 分享 查看详情
Android Lint增量扫描实战纪要 (mp.weixin.qq.com)
先来说我为什么要做增量扫描这个事情,毕竟代码扫描已经老生常谈了,业界方案一搜一大堆,有什么好讲的,大部人看到这篇文章的时候肯定这么想吧,但是注意今天我要分享的不是全量扫描,我分享的是从无到有实现增量扫描的过程,有的时候实现一个方案从来不是重点,我们对于方案的认知程度才是我们自己最重要的收获 ̄▽ ̄ 。
by @code小生 2018-01-28 17:51 分享 查看详情
简述JVM基础(六):虚拟机字节码执行引擎 (mp.weixin.qq.com)
物理机的执行引擎是直接在物理硬件如CPU、操作系统、指令集上运行的,但是对于虚拟机来讲,他的执行引擎由自己实现。 执行引擎有统一的外观(Java虚拟机规范),不同类型的虚拟机都遵循了这一规范,输入字节码文件,解析字节码处理,然后输出结果。
by @code小生 2018-01-28 17:50 分享 查看详情