前言 Handler是个老生常谈的问题,我相信几乎所有的Android开发者都会使用Handler,那关于Handler还有什么好讲的吗?Handler如果仅仅是使用的话,确实没什么好讲的,但是Handler却是一个几乎…
热修复学习(3):Tinker组件依赖
上一篇热修复学习(2):TinkerSDK集成比较方便,但是补丁存在三方平台且更新受三方限制,这一篇的思路是在启动app时获取是否需要更新,然后下载并且加载补丁。 1.在项目的build.gradle中添加依赖 buil…
看完九篇字体系列的文章,你还觉得我是在说字体?
top 关注过我的公众号一段时间的朋友,都应该知道,最近一段时间,断断续续的一直在写一个关于修改 App 字体的系列文章,到现在已经写了九篇了,差不多算是将我觉得和字体有关的内容,都讲解清楚了,到现在,应该算是完结了。 …
Picasso-源码解析(二)
前言 前面一篇文章简单的介绍了Picasso的使用,已经整个源码调用的流程,过了一遍。但是其中还有很多的细节我们并没有去涉及到。今天在昨天的基础之上再进行深入。 Picasso对象 前面一篇文章我们是从Picasso.g…
预告 | 送书福利
写在前面 前两天说了下本周四要发福利的,由于这次福利数量相对比较多,而且想在活动持续时间内尽可能让每个读者都有机会参与,但是想到周末两天大多数同学可能精力都不在这,所以时间就调整为下周一为大家推送福利,今天先预告下,…
【Android】View的绘制原理
一、View绘制总入口 ActivityThread中,首先创建Activity,然后通过attach方法初始化对应的mWindow,然后将顶级视图DecorView添加到Windows中,并创建ViewRootImpl…
Android Seekbar使用
thumb也可以做一个选择器 <SeekBar android:thumbOffset="0dp" android:focusable="true" android:id="@+id/sb_calculator" …
Android编译时注解,和重复代码Say No!
写在前面: 越来越多的Android框架都使用了注解来实现,如有名ButterKnife、Dagger2都是用编译时注解来生成代码,好处是比反射效率更高,稳定性、可读性也更好。既然注解这么好用,那么就非常有必要对其进行了…
EventBus
发送事件的类不需要注册和反注册 要在下一个界面注册并且在打开界面之后立马发送消息将接受不到,原因是太快了还没来得及注册就发送了。 解决方法:使用postSticky粘性发送消息,即在注册之前发送消息也能收到消息 并且在回…
Android 音视频开发 - 使用AudioTrack播放音频
序言 说到在 Android 平台上播放音频,我们最先想到的是 MediaPlayer,系统 API 对其做了比较全面的封装,开发者用少量的代码就能实现播放功能。MediaPlayer 可以播放多种格式的声音文件,例如 …
如何使用socket进行Http请求和解析响应
前言 本篇文章是为讲述okhttp源码做一个铺垫,主要是简单讲述一下socket的使用,因为在okhttp中网络通讯使用的便是socket。但这篇文章不会涉及okhttp,会简单阐述下socket,然后用代码进行连接后h…
计算机网络 复习笔记 概述 (1)
网络定义: 网络是把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。与网络相连的被称作主机。互联网(因特网,Internet)是指当前全球最大的,开放的,由众多网络相互链接而成的特定互连网,它采用TCP/…