Colourful Day

我需要,最狂的风,和最静的海。

——顾城《第八个早晨》


  • 首页

  • 分类

  • 归档

  • 标签

  • 留言

  • 关于

Android Architecture Component之Lifecycle解析

发表于 2018-07-15 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
Header终于到了最后的关头,Android Architecture Component 系列的最后一节内容。今天给大家带来的就是 Lifecycle 的解析。 至于 Lifecycle 的作用就不过多介绍,简单的来说就是让你自己定义的东西可以感知生命周期。比如你想设计了一个 GPS 位置监听器,打算在 Activity 可交互状态下发送地址位置,那么就可以利用 Lifecycle 来做这件事,这样和 Activity 的耦合性就减少了很多。 废话不多说了,就来看看 Lifecycle 内部的实现原理吧。 LifecyclePart 1LifecycleOwner先来看 Lifecycle ...
阅读全文 »

Android Architecture Component之ViewModel解析

发表于 2018-07-09 | 更新于 2018-11-11 | 分类于 Android Blog | 评论数:
Header之前给大家分析过了 LiveData ,今天就来看看 ViewModel 。 ViewModel 的作用就相当于 MVP 中的 Presenter ,是用来衔接 Model 和 View 的。通常把一些与 View 无关的业务逻辑写在 ViewModel 里面。ViewModel 内部创建出 LiveData 对象,利用 LiveData 对象来传递数据给 View 。 ViewModel 相对于 Presenter 而言,有以下几个好处: ViewModel 并不直接持有 View ,所以在 ViewModel 销毁时不需要像 Presenter 一样地去手动解除 View 的 ...
阅读全文 »

Android Architecture Component之LiveData解析

发表于 2018-06-20 | 更新于 2018-07-15 | 分类于 Android Blog | 评论数:
HeaderAndroid Architecture Component 是 Google 在 2017 年推出的一套帮助开发者解决 Android 架构设计的方案。里面有众多吸引人的亮点,比如 Lifecycle、ViewModel 和 LiveData 等组件的设计,确实是一款牛逼的架构。 相信很多同学都用过这个架构了,在这就不多介绍了。今天就给大家来解析一下其中的 LiveData 是如何工作的。 LiveData 表示的是动态的数据,比如我们从网络上获取的数据,或者从数据库中获取的数据等,都可以用 LiveData 来概括。其中 setValue 方法是需要运行在主线程中的,而 pos ...
阅读全文 »

Android Data Binding入门

发表于 2018-05-30 | 分类于 Android Blog | 评论数:
配置新建一个 Project,确保项目 build.gradle 中的 Gradle 插件版本不低于 1.5.0-alpha1,比如我的 Demo 是 3.1.2 版本的: 1234567891011121314buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' // NOTE: Do ...
阅读全文 »

记自己2018年三月份的面试经历

发表于 2018-04-01 | 更新于 2018-04-10 | 分类于 Android Blog | 评论数:
烦烦烦烦过完年后,又是一波招聘热季,各种好公司、好岗位都在拼命招揽人才。自己也考虑到以后的发展和更好的工作还有未来,整天处于焦虑和烦恼的状态,看看自己现在拿到的工资,不多。所以为了改变这局面,打算下海试试水。 先讲一下自己的情况,2016 年本科毕业,在目前这家公司基本上已经在职一年半多了。而最近大半年在公司都是做 Java 开发,处于大白阶段,会写代码,但是没有深入到框架源码。 所以想要去市场上应聘 Android 岗位,还需要好好复习一番,因为半年没有碰 Android 了。结果还是发现有些知识点在面试的过程中已经记不清了,生疏了。 由于自己是在职,考虑更好的发展机会,所以并没有疯狂海投简 ...
阅读全文 »

HTTPS加密原理

发表于 2018-03-03 | 分类于 算法 | 评论数:
HeaderHTTP、HTTPS在我们日常开发中是经常会接触到的。 我们也都知道,一般 Android 应用开发,在请求 API 网络接口的时候,很多使用的都是 HTTP 协议;使用浏览器打开网页,也是利用 HTTP 协议。看来 HTTP 真是使用广泛啊,但是,HTTP 是不安全的。利用网络抓包工具就可以知道传输中的内容,一览无余。比如我经常会使用 Fiddler 来抓包,搜集一些有趣的 API 接口。 那么问题来了,如何保证 HTTP 的安全性呢?基本上所有的人都会脱口而出:使用 HTTPS 协议。99.9% 的人都知道 HTTPS 会将传输的内容进行加密,但是接着问具体加密的过程和步骤,很 ...
阅读全文 »

LinkedList内部原理解析

发表于 2018-01-31 | 更新于 2018-02-03 | 分类于 Java Blog | 评论数:
注:本文解析的 LinkedList 源代码基于 Java 1.8 。 HeaderList 集合中,之前分析了 ArrayList ,还剩下了 LinkedList 没有分析过。那么趁着今天有空,就把 LinkedList 的内部原理来讲讲吧。 LinkedList 是有序并且可以元素重复的集合,底层是基于双向链表的。也正因为是链表,所以也就没有动态扩容的步骤了。 源码分析构造方法1234567public LinkedList() {}public LinkedList(Collection<? extends E> c) { this(); ...
阅读全文 »

HashSet内部原理解析

发表于 2018-01-28 | 更新于 2018-01-29 | 分类于 Java Blog | 评论数:
注:本文解析的 HashSet 源代码基于 Java 1.8 。 HeaderHashSet是用来存储没有重复元素的集合类,并且它是无序的。 HashSet 内部实现是基于 HashMap ,实现了 Set 接口。 源码解析构造方法1234567891011121314151617181920public HashSet() { map = new HashMap<>();}public HashSet(Collection<? extends E> c) { map = new HashMap<>(Math.max ...
阅读全文 »

ArrayList内部原理解析

发表于 2018-01-21 | 更新于 2018-01-27 | 分类于 Java Blog | 评论数:
注:本文解析的 ArrayList 源代码基于 Java 1.8 。 Header之前讲了 HashMap 的原理后,今天来看一下 ArrayList 。 ArrayList 也是非常常用的集合类。它是有序的并且可以存储重复元素的。 ArrayList 底层其实就是一个数组,并且会动态扩容的。 源码分析构造方法1234567891011121314151617181920212223242526272829public ArrayList(int initialCapacity) { if (initialCapacity > 0) { // 创建 ...
阅读全文 »

HashMap内部原理解析

发表于 2018-01-13 | 更新于 2018-11-11 | 分类于 Java Blog | 评论数:
注:本文解析的 HashMap 源代码基于 Java 1.7 。 HeaderHashMap 在平时 Java/Android 开发中,是绝大多数开发者都普遍使用的集合类。 它内部是基于哈希表实现的键值对存储,继承 AbstractMap 并且实现了 Map 接口。 而对于它的 get/put 使用方法相信大家都已经到了炉火纯青的地步。虽然都会用,却可能没有好好深入探讨过 HashMap 内部的实现原理。正好趁着有时间,今天就给大家一步步地解析 HashMap 的内部实现原理。 在这就基于了 Java 1.7 的源代码来讲解了,Java 1.8 的 HashMap 源码相比 Java 1.7 ...
阅读全文 »
1…345…12
俞其荣

俞其荣

向前跑 迎着冷眼和嘲笑

120 日志
11 分类
51 标签
RSS
GitHub Twitter 微博 Email
Creative Commons
© 2015 — 2021 俞其荣
由 Hexo 强力驱动
|
主题 — NexT.Muse
Hosted by Coding Pages