Tim's Track

书写是为了更好地思考


  • 首页

  • 关于

  • 归档

  • 标签

  • 搜索

gradle 中 api provided compile implementation 之间的区别

发表于 2018-06-24 | 分类于 Gradle | 阅读次数
字数统计 997 | 阅读时长 4

概述

api、provided、compile、implementation 都是 gradle 添加依赖时的选项,不同的选项表示不同的依赖关系。

其中 api、implementation 是 Gradle 3.4 引入的新的依赖配置,用来代替 compile 依赖配置。其中 api 和以前的 compile 依赖配置是一样的。使用 api/compile 的依赖方式,会向外界暴露本模块所依赖的库的接口,使用 implementation 则不会。

阅读全文 »

Fragment Note

发表于 2018-06-02 | 分类于 Android | 阅读次数
字数统计 6,485 | 阅读时长 28

笔记自用,部分内容待完善。

概述

当您将片段作为 Activity 布局的一部分添加时,它存在于 Activity 视图层次结构的某个 ViewGroup 内部,并且片段会定义其自己的视图布局。您可以通过在 Activity 的布局文件中声明片段,将其作为 <fragment> 元素插入您的 Activity 布局中,或者通过将其添加到某个现有 ViewGroup,利用应用代码进行插入。不过,片段并非必须成为 Activity 布局的一部分;您还可以将没有自己 UI 的片段用作 Activity 的不可见工作线程。

阅读全文 »

Http 头部字段

发表于 2018-03-02 | 分类于 计算机网络 | 阅读次数
字数统计 1,783 | 阅读时长 7
HTTP 报文格式 HTTP 请求报文在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部分构成。 使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。 HTTP 响应报文在响应中,HTTP 报文由 HTTP 版本、状态码(数字和原因短语)、 ...
阅读全文 »

拆轮子系列——LeakCanary工作原理

发表于 2017-12-15 | 分类于 源码分析 , 框架原理 | 阅读次数
字数统计 3,552 | 阅读时长 14

一、概述

LeakCanary 是一个内存泄漏的自动化监测工具。

1.1什么是内存泄漏?

内存泄漏指的是应该被释放的内存的没有被释放。原因?长生命周期的对象持有短生命周期对象的引用。

1.2哪些对象应该被回收?

首先要找出哪些对象是应该被回收的?Android 中使用最频繁的是 Activity 和 Fragment 了。他们都有 onDestory 方法,当它们的 onDestroy 执行的时候,就可以把它们列为 「应该被回收的对象」,可在 onDestory 方法中建立检测点。

阅读全文 »

拆轮子系列——LitePal 原理解析

发表于 2017-12-03 | 分类于 源码分析 , 框架原理 | 阅读次数
字数统计 4,755 | 阅读时长 20

LitePal 解决了什么问题?

LitePal 采取的是对象关系映射(ORM)的模式,那么什么是对象关系映射呢?简单点说,我们使用的编程语言是面向对象语言,而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。

但是我们为什么要使用对象关系映射模式呢?这主要是因为大多数的程序员都很擅长面向对象编程,但其中只有少部分的人才比较精通关系型数据库。而且数据库的 SQL 语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则很好地解决了这个问题,它允许我们使用面向对象的方式来操作数据库,从而可以从晦涩难懂的 SQL 语言中解脱出来。

阅读全文 »

拆轮子系列——EventBus 源码解析

发表于 2017-10-14 | 分类于 源码分析 , 框架原理 | 阅读次数
字数统计 5,181 | 阅读时长 23

项目地址:EventBus,本文分析版本: 3.1.1

一、概述

EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等。
传统的事件传递方式包括:Handler、BroadCastReceiver、Interface 回调,相比之下 EventBus 的优点是代码简洁,使用简单,并将事件发布和订阅充分解耦。

阅读全文 »

拆轮子系列——ButterKnife工作原理

发表于 2017-10-07 | 分类于 源码分析 , 框架原理 | 阅读次数
字数统计 3,493 | 阅读时长 15

概要

本篇博客主要包括以下三个部分

  • 日常使用 ButterKnife 的方式以及 ButterKnife 的 bind 方法
  • Xxx_ViewBinding 类是如何生成的?
  • 注解处理器是怎么注册的?

其中的代码基于 ButterKnife 8.6.0

本文假设你已经对注解有所了解。不了解注解的同学可以先看看这篇文章 ,我们主要关注编译期注解。

阅读全文 »

String StringBuilder与StringBuffer的区别

发表于 2017-09-21 | 分类于 java 基础 | 阅读次数
字数统计 1,450 | 阅读时长 6

概述

image

CharSequence 就是字符序列,String, StringBuilder 和 StringBuffer 本质上都是通过字符数组实现的。

  1. String 字符串常量(不可变)
  2. StringBuffer 字符串变量(线程安全)
  3. StringBuilder 字符串变量(非线程安全)
阅读全文 »
1234…6
Tim Lin

Tim Lin

Live a life you will remember.

46 日志
31 分类
28 标签
GitHub
© 2020 Tim Lin
由 Hexo 强力驱动
主题 - NexT.Pisces
0%