Jaqen's Blog

Jaqen's Blog

Android Handler 消息处理机制
日常开发中,一般不会在子线程中直接进行 UI 操作,大部分采取的办法是创建 Message 对象,然后借助 Handler 发送出去,再在 Handler 的 handlerMessage() 方法中获取 Message 对象,进行一系列的 UI 操作。Handler 负责发送 Message, 又负责处理 Message, 其中经历了什么 ,需要从源码中一探究竟。 首先看 Handler 的构造函数: 12345678910111213141516171819public Handler(Callback callback, boolean async) { if (FIN...
Android 多进程基本知识整理
在 Android 中,一个应用默认有一个进程。但我们可以通过配置实现在一个应用中开启多个进程。 开启多进程方式 在清单文件中指定 android:process 属性 适用元素:Activity,Service,Receiver,ContentProvider。 以: 开头,表示这个进程是应用的私有进程;以小写字母开头,表示这个进程是全局进程,可以被多个应用公用。 123456<activity android:name=".SecondActivity" android:process=":second" /><activity android:...
Android 编码规范
简单总结了 Android 开发中的一些代码规范,供开发者参考。 0 Index 1 命名规范 2 注释规范 3 格式规范 4 参考资料 1 命名规范大驼峰命名(UpperCamelCase):每个单词的第一个字母都大写。 小驼峰命名(lowerCamelCase):除第一个单词以外,每一个单词的第一个字母大写。 命名的基本原则: 不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。但比如 shanghai 等通用的名称,可视同英文。 除了常见的英文缩写,尽量避免缩写。 1.1 类 / 接口命名 使用大驼峰命名法,...
Android Intent 传递自定义对象
Intent 可以用来启动活动、发送广播、启动服务等,通过 putExtra 方法可以添加一些附加数据,达到传值的效果,但若想传递自定义对象的时候就无能为力了。 可以通过使用 Serializable 接口、Parcelable 接口以及转换对象为字符串的方式进行传递。 1、Serializable 表示将一个对象转为字节实现可存储或可传输的状态,一个对象能够序列化的前提是实现 Serializable 接口。 Model: 123456789101112public class Person implements Serializable { private Strin...
同步、异步、回调及观察者模式
1、同步调用同步调用是最基本的调用方式,即类 A 的方法 a() 调用类 B 的方法 b(),一直等待方法 b() 执行结束,方法 a() 才继续往下走。这是一种阻塞调用, 适用于方法 b() 执行时间不长的情况,如果方法 b() 执行时间过长或者直接阻塞的话,方法 a() 的余下代码是无法执行下去的。 2、异步调用异步调用是为了解决同步调用存在阻塞情况而产生的一种调用方式。类 A 的方法 a() 通过创建新线程的方式调用类 B 的方法 b(),代码接着直接往下执行。这样方法 b() 在新线程中执行,就不会阻塞方法 a() 的执行。对于方法 a() 无需方法 b() 的返回结果,可以直接...
Android 屏幕适配笔记
基本概念 in 英寸,手机屏幕的物理尺寸。1 英寸等于 2.54cm。如果说手机屏幕是 5 寸,表示手机屏幕对角线长度为 5X2.54=12.7cm。 px 像素,英文单词 pixel 的缩写,屏幕上的点。常见的分辨率 320x480、480x800、720x1280、1080x1920 指的就是像素。 dpi 每英寸包含的像素个数,dots per inch 的缩写。比如 320X480 分辨率的手机,宽 2 英寸,高 3 英寸, 每英寸包含的像素点的数量为 320/2=160dpi(横向)或480/3=160dpi(纵向),160就是这部手机的dpi。 density ...
自动更新 hosts 实现科学上网
众所周知,在国内上 Google 查阅资料非常困难。于是出现了一些免费的工具和 VPN 服务帮我们访问,但要么是有流量限制,要么需要收费,而且有些 VPN 代理的速度也不是很快。 更改 hosts 方法实现科学上网是最简单可行的方式,但 hosts 会经常被封,每次手动更新很麻烦。所以,下面我介绍一个自动更新 hosts 的小工具,可以很方便的访问 Google。 1、首先安装 SwitchHosts,SwitchHosts 是一个用于快速切换 hosts 文件的小程序,非常实用,其强大之处在于它可以自动关联远程 hosts,自动更新。下载地址:https://oldj.github.i...
设计模式之工厂方法模式
简单工厂模式提供了专门的工厂类用于创建对象,实现了对象的创建和使用分离。但工厂类集中了所有产品对象的创建逻辑,职责过重;此外,如果增加新产品,需要修改工厂类的源代码,违背开闭原则。 工厂方法模式则可以很好的解决这一问题。在工厂方法模式中,不在提供统一的工厂类创建所有的产品对象,而是针对不同的产品提高不同的工厂。 模式结构图如下: 共包含以下 4 个角色: Product:定义产品的接口。也就是产品对象的公共父类。 ConcreteProduct:具体产品类,与具体工厂一一对应。 Factory:抽象工厂接口。它是工厂方法模式的核心。 ConcreteFactory:具体工厂类,返回一...
Chrome 插件推荐
近些年来,在众多浏览器大战中,Google 的 Chrome 浏览器的市场份额位居首位,而且依然呈现高速增长趋势。Chrome 浏览器的优点不必多言,谁用谁知道。 这里主要推荐本人常用的 Chrome 插件,能够帮助你更加便捷高效的使用 Chrome 浏览器。 1、Checker Plus for Gmail™ 这个插件的强大之处在于你无需打开 Gmail ,即可收到桌面邮件通知,方便地查看、撰写或删除邮件。 2、划词翻译 支持谷歌、百度、有道、必应四大翻译和朗读引擎,可以方便的查看、复制和朗读不同引擎的翻译结果。再也不用担心读不懂英文资料了。 3、OneTab 在 chrome ...
朴树《猎户星座》
朴树终于出新专辑了。专辑的名称叫《猎户星座》。4 月 28 号零点在网易云音乐预售数字专辑。 我第一次听到朴树的歌,是在 04 年,电视上播放丰田威驰的广告,放的就是朴树的 「Colorful Days」,当时觉得 MV 里的朴树酷极了。后来高中在学校,每个礼拜二和礼拜四下午放学后,校广播都会放 「Colorful Days」和 「生如夏花」。再后来上大学来到城市,耳边没有消失过的,总是他的歌。 这十多年,朴树一度沉寂,从公众视线中消失。我们这些歌迷一直都在等他,终于有幸看到他归来,热泪盈眶。 今天零点,新专辑第一首,「清白之年」公开,我在零点准时点开,歌曲平缓如徐徐微风,如潺潺流水从...
avatar
Jaqen Ng