自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你关注了我,是个概率极低的事件......

美团外卖移动端开发工程师、上海大学硕士

  • 博客(17)
  • 收藏
  • 关注

原创 送给每一个关注Colin的朋友

这篇博客是献给所有的“屌丝”、“宅男”、“loser”,所有别人会说他是“没有未来”的人,因为其实我就是这么一个人。 我上学的时候,跟我所有的同学都不太一样,我不会出去玩,也不会打球,也不会社交,只会躲在自己的屋子里。而且,我的生活,它就是一系列的失败。你知道吗?刚进大学时,一个连基本office操作都不会的我,害得全班同学必须等着不会“盲打”的我打完字才能下课。对不起,你没有天赋。...

2018-02-21 23:49:04 2445 6

原创 【Android 异常与性能优化】冷启动优化

什么是冷启动冷启动定义 在Android中系统为每个app至少分配了一个进程。在启动前系统没有该app的任何进程信息,这个时候应用的启动就叫做冷启动。冷启动和热启动的区别 热启动:按home键退出应用后马上又启动应用。启动前,系统中就已经有了该app的进程。冷启动时间 从创建app进程到完成MainActivity视图的绘制。冷启动流程Zygote进程中fork创建出一个新的进程–>A

2018-02-19 17:49:20 264

原创 【Android 技能树】唉唉,知识框架体系就在这里呢,你还不点进来吗?

Hello 祝贺你能关注到Colin的博客,因为你要知道,能认识我是一件概率很小的事情。我会在这个专栏里从以下这几个方面来介绍Android知识框架体系,希望你们能来见证Colin的成长。Android基础异步消息处理机制ViewAndroid项目构建开源框架Android异常与性能优化热门前沿知识Java虚拟机设计模式网...

2018-02-19 16:34:19 423 1

原创 【Android 异常与性能优化】内存管理

内存管理机制概述分配机制 操作系统会为每一个进程合理地分配内存资源,从而保证每一个进程都能正常运行,而不至于内存不够使用或内存占用过多。回收机制 操作系统会在内存不足时合理地回收内存并再分配内存,从而保证新的进程能够正常进行。Android内存管理机制分配机制 Android在为每个进程分配内存的时候采用了弹性的分配方式,就是说,一开始系统不会为app分配太多内存,而是为每一个app分

2018-02-19 16:17:39 272

原创 【Android 异常与性能优化】UI卡顿相关

UI卡顿原理60fps->16ms 接下来我将带大家看下这两个数字的原理。其实很多用户感受到的卡顿问题,就是来源于UI渲染。我们知道Android系统每隔16ms发出信号渲染一次UI,如果每一次渲染都成功就能达到流畅的画面,如果一次渲染在16ms内无法完成就会让用户感受到卡顿。 我们在滑动listView时有时会感觉到卡顿,这是因为Item结构过于复杂/层级过多,无法在16ms内渲...

2018-02-19 15:40:22 379

原创 【Android 异常与性能优化】Bitmap相关

LRU它用来清理最近最少使用对象,其内部是通过LinkedHashMap实现的。它提供了get和put方法来完成对象的添加和获取,当缓存满了它可以提供一个trimToSize方法来清理最近最少使用对象。我们来看下这个方法是如何实现的: 可以看到这个方法会一直循环判断size是否小于maxSize,如果不小于maxSize,则会从LinkedHashMap中依次remove下一个元素,并调...

2018-02-19 14:01:37 321

原创 【Android View相关】View的绘制机制

View树的绘制流程measure(计算视图大小)–>layout(安置视图位置)–>draw(重绘视图) 在onMeasure方法中会递归对所有子元素进行测量,layout过程与measure过程类似,也是一个递归的过程。measure measure测量是一个从上到下的递归过程。在measure方法中有几个比较重要的参数: 1. ViewGroup.Layou...

2018-02-18 23:18:25 384

原创 【Android 编程架构】MVC/MVP/MVVM

Android发展到今天比较主流的架构是MVP,但是MVP其实也是对MVC的一种演变,所以在着重介绍MVP之前先总结一下MVC模式。MVC定义在Android开发过程中流行的开发框架曾经采用的是MVC模式,用MVC模式的好处就是便于UI界面的显示和业务逻辑的分离。 MVC的全名是Model View Controller,中文意思就是“模型 视图 控制器”,它是一种软件的设计典范,它...

2018-02-18 01:17:45 1005

原创 【Java 基础】反射

编译时vs运行时“编译时”是指,将java代码编译成class文件的时期,不涉及内存。 “编译时类型”是指,编译时类型由声明该变量时使用的类型决定。“运行时”是指,java虚拟机执行class文件的时期,涉及内存。 “运行时类型”是指,运行时类型由实际赋给该变量的对象决定。动态绑定 “编译时”调用的是声明类型的成员方法,“运行时”调用的是实际类型的成员方法。 注意:调用引用类型的...

2018-02-17 12:52:45 257

原创 【Java 虚拟机】堆/栈

Java运行时的内存分配策略静态方法区主要存储:静态数据、全局static数据和常量这块内存在程序编译的时候就已经分配好在整个程序运行期间,都会存在栈区方法体内的局部变量都在栈上创建在方法执行结束后,这些局部变量所占内存都会被释放堆区又称为动态内存分配区,是指在程序运行时直接new出来的内存,这部分内存在不使用时,就会由Java垃圾回收器负责回收堆内存...

2018-02-17 11:31:54 257

原创 【Java 虚拟机】类加载器

一、引言我们编写好的Java程序都是由若干个class文件组织而成。当我们程序运行时,会调用该程序的一个入口函数来执行程序功能,而这些功能是封装在不同的class文件中的,所以就常常会从这个class文件调用另一个class文件中的方法。如果另外一个class文件不存在,就会引发系统异常。程序在启动时,绝对不会加载程序需要的所有class文件,而是根据程序需要,通过Java的类加载机制来动态地加载...

2018-02-17 00:45:21 265

原创 【Android 网络协议 四】DNS解析

我们知道,网络中的大部分通讯都是基于TCP/IP协议的,而TCP/IP协议中有个很重要的协议——IP协议,它是基于IP地址的。我们无法记住大量的IP地址,所以就需要DNS服务器能把域名翻译成IP地址。一、什么是DNS?    它所提供的服务是用来将主机名和域名转换为IP地址的工作。我们知道域名和IP地址是一一对应的关系,但是多个域名可以对应同一个IP地址。    二、DNS查询过程    ...

2018-02-15 11:20:39 1797

原创 【Android 网络协议 一】TCP/IP网络模型

本章将从五个方面讲TCP/IP模型:物理层、链接层、网络层、传输层、应用层。首先来看下面这张图:        互联网主要是通过分层来实现的,每一层都定义它自己的功能,它就像一个大楼一样,每一层都需要底层来支持。我们开发人员能接触到的都是最上层,可如果想深入理解互联网,必须从底层开始研究。    最底层是物理层,它通过物理的手段把计算机连接起来。最上方的应用层是最接近我们用户的。接下来我们...

2018-02-15 11:19:47 961

原创 【网络协议】HTTPS协议

首先讲解一下这篇文字的背景。你看到的这篇文章其实已经写了很久了,不过在最近进行了一次大的改版。因为作者之前写这篇文字的时候并没有完全掌握https协议的精髓,只是记录下了https协议的一些知识点,虽然这期间作者也陆续增添了几次内容。直到作者前几天在听完某大佬分享了https协议,并产生了深深的自我怀疑——为什么有人可以随时把https建立连接的过程讲得那么清楚?这个过程明明很复杂啊!大佬当时...

2018-02-15 11:15:56 716

原创 【Android 网络协议 二】HTTP协议

一、HTTP协议简介    1、协议    指计算机网络中两个计算机之间进行通信所必须遵守的规定或规则。    2、HTTP协议    是一种超文本传输协议。它允许将超文本标记语言(HTML)文档从Web服务端传送到客户端浏览器。    3、URI    a. URI的全称是uniform resource identifier,是统一资源标识符,用来唯一标识一个资源。就是说,Web上有很多种资源...

2018-02-14 16:48:00 457

原创 【Android Fragment相关】Fragment基础知识总结

1.Fragment为什么会被称为第五大组件?    在日常开发中,我们与Fragment打交道的时间非常多,不亚于其他四大组件,并且Fragment也有自己的生命周期。Fragment是在Android 3.0中被引入的,起初是为了解决大屏幕手机的适配问题。不过Fragment必须要依赖Activity才能使用。2.Fragment加载到Activity的两种方式    (1)添加Fragmen...

2018-02-13 23:56:21 297

原创 【Android Activity相关】Activity的生命周期问题总结

1.什么是Activity    Activity是与用户交互的接口,它提供了一个界面,让用户进行点击滑动等操作。2.Activity的四种状态    (1)running:Activity处于活动状态,可以提供给用户交互操作,处于Activity栈顶。    (2)paused:Activity失去焦点(被非全屏Activity占据,被透明Activity占据等),这时用户只是失去了与Activ...

2018-02-02 10:29:48 236

空空如也

空空如也

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

TA关注的人

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