今天主要说说布局。我在看Android的任何内容的时候,心中总要和iOS进行一番比较,就说布局吧,在iOS中,我们一般直接使用frame
计算、AutoLayout约束布局。在Android的世界中,一般使用xml布局文件来进行布局,用到的布局方式有四种:线性布局、相对布局、帧布局、百分比布局。还有一种是直接使用图形化添加约束:ConstraintLayout。为何Android的布局方式如此的多,主要是因为Android屏幕的碎片化,不像苹果就那几款手机。
今天来说一说Android四大组件之一的Activity
,类似于iOS的UIViewController
。当我们新建一个Android项目时,Android Studio默认会为我们创建一个主活动:MainActivity
和一个默认的主布局:activity_main.xml
。一个活动想要显示在屏幕上,就必须在AndroidManifest.xml
中注册。但是这些工作都有IDE帮我们自动完成了。我们来看AndroidManifest.xml
:
|
由于前段时间使用ReactNative开发过一个项目,在开发的过程中,会使用到大量的非ReactNative提供的组件和功能。这时候就必须写原生桥接,iOS还好说,毕竟是靠这个吃饭的,可是android就捉襟见肘了。为了向大前端的目标更进一步,我计划开始学习android,为期6个月,我的目标是6个月内起码自己公司的android项目可以上手,当然,如果想成为真正的android开发者,光靠这6个月是不行。还需要大量的实际项目才能锻炼。
值得庆幸的是我在大学主攻的就是java(哈哈,现在也基本上忘的差不多了)。为了打好基础,我买了两本书,一本是《java编程思想》,一本是京东上销量很好的《第二行代码Android》,希望这两本书能够帮到我。另外我也会专门开一个专栏,讲解我学习java的过程。可能在接下来的博客中,我总结的都是基础知识,大神莫嘲笑。
阅读全文网络是APP开发中非常重要的一部分,除非这个APP是本地自玩,否则就离不开网络。在iOS开发中,我们一般都会去使用别人造好的轮子,其中最有名也最常用的非AFNetworking
莫属。这篇文章就深入探讨一下AFNetworking
是如何工作的。
概述
我们先来看看AFNetworking
整个架构体系:

首先,我们有两个问题需要了解:
- 如何使用NSURLSession发出HTTP请求
- 如何使用AFNetworking发出HTTP请求
SDWebImage是一个开源的第三方库,它提供了UIImageView的一个分类,以支持从远程服务器下载并缓存图片的功能。它具有以下功能:
- 提供UIImageView的一个分类,以支持网络图片的加载与缓存管理
- 一个异步的图片加载器
- 一个异步的内存+磁盘图片缓存
- 支持GIF图片
- 支持WebP图片
- 后台图片解压缩处理
- 确保同一个URL不会被反复加载
- 确保下载及缓存时,主线程不被堵塞
从github上对SDWebImage使用情况可以看出,SDWebImage在图片下载及缓存的处理还是被认可的。在本文中,我们主要从源码的角度来分析一下SDWebImage的实现机制。讨论的内容将主要集中在图片的下载及缓存,而不包含对GIF图片及WebP图片的支持操作。不过在3.8.2版本以后,SDWebImage将会使用NSURLSession代替原来的NSURLConnection,主要是更新的是下载功能部分。具体变化可以看:点这里。目前截止到当前时间,最新的版本为4.0.0-beta2,这篇文章是在4.0.0-beta2基础上进行剖析。
阅读全文前面几篇基本介绍了runtime中的大部分功能,包括对类与对象、成员变量与属性、方法与消息、分类与协议的处理。runtime大部分的功能都是围绕这几点来实现的。
本章的内容并不算重点,主要针对前文中对Objective-C Runtime Reference内容遗漏的地方做些补充。当然这并不能包含所有的内容。runtime还有许多内容。
阅读全文Objective-C中的分类允许我们通过一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以做到。
Objective-C中的协议是普遍存在的接口定义方式,即在一个类中通过@protocol
定义接口,在另外类中实现接口,这种接口定义方式也成为“delegation”模式,@protocol
声明了可以被其他任何类实现的方法,协议仅仅是定义一个接口,而由其他的类去负责实现。
在本章中,我们来看看runtime对分类与协议的支持。
阅读全文理解Method Swizzling
是学习Runtime机制的一个很好的机会。Method Swizzling
是改变一个selector
的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector
对应的函数,来修改方法的实现。
前面我们讨论了Runtime中对类和对象的处理,及对成员变量与属性的处理。这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制。我们将详细讨论消息的发送及消息的转发。不过在讨论消息之前,我们先来了解一下与方法相关的一些内容。
阅读全文