Yinhuan Blog

我是一只无比耿直的程序猿

排序:
默认
按更新时间
按访问量

Android中子线程真的不能更新UI吗?

Android的UI访问是没有加锁的,这样在多个线程访问UI是不安全的。所以Android中规定只能在UI线程中访问UI。但是有没有极端的情况?使得我们在子线程中访问UI也可以使程序跑起来呢?

2016-10-03 17:58:44

阅读数:10002

评论数:37

对 TCP 建立连接需要 3 次握手的理解

我觉得TCP的三次握手设计是很巧妙的。而为什么TCP建立连接需要三次握手?也是我学习时的疑惑,接下来谈下自己的理解

2017-08-13 17:13:03

阅读数:370

评论数:0

一种优化 ListView 初始化加载速度的方案

我在使用 ListView 的时候,有一个问题困扰我挺久:能不能控制 ListView 初始化时加载的Item数量?比如,如果我刚打开一个页面,ListView 关联 Adapter 就开始加载十几条数据,如果加载的 Item 是 TextView 还好,不会影响到速度,但如果是 Webvie...

2017-08-08 16:54:59

阅读数:452

评论数:0

LruCache 源码分析

我在参加笔试的时候,有一道题是设计一个 LruCache,当时由于不理解原理而没有写出来,现在看了几遍源码,记录下笔记理清思路

2017-04-30 16:54:37

阅读数:352

评论数:0

图解反转单向链表

我总觉的反转链表的过程不是那么好理解,花了点时间画图来帮助理解

2017-04-19 12:18:58

阅读数:2093

评论数:2

排序算法总结

查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事

2017-04-16 23:26:12

阅读数:381

评论数:1

二分查找的递归和非递归实现

二分查找的递归和非递归实现

2017-04-10 17:06:01

阅读数:253

评论数:0

Dagger2 原理分析

Dagger2 使用编译时注解 + APT 实现依赖注入,能带来什么好处呢?一个词:解耦。在项目越来越庞大的时候,Dagger2 就体现出强大之处了

2017-04-05 21:28:12

阅读数:574

评论数:0

为什么重写了equals(),还要重写hashCode()?

hashCode 方法用于散列集合的查找,equals 方法用于判断两个对象是否相等。为什么重写了 equals 方法,还要重写 hashCode 方法?

2017-04-04 19:46:49

阅读数:2814

评论数:1

剑指 Offer 专项训练

Java 语言实现,用于校招复习。

2017-02-28 12:42:06

阅读数:374

评论数:0

Retrofit 源码分析

我在半年前才开始接触 Retrofit,在那个时候这个框架已经很火了。现在寒假复习到这一块,也好久没写博客了,简单梳理了一下写成一篇文章。有不对的地方,望指正

2017-01-24 22:12:58

阅读数:1064

评论数:0

Android Binder跨进程通信原理分析

我们知道进程之间,虚拟地址不同,是不能直接通信的,这是一种保护机制。用户空间可以通过System calls(系统回调)与内核空间通信的,如果在内核空间中有一个模块,能够完成数据的转发,那么是不是两个进程就可以通信了呢?

2016-11-27 15:15:30

阅读数:4524

评论数:3

Java GC 机制与内存分配策略

收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现 为什么我们要了解学习 GC 与内存分配呢? 在 JVM 自动内存管理机制的帮助下,不再需要为每一个new操作写配对的delete/free代码。但出现内存泄漏和溢出的问题时,如果不了解虚拟机是怎样使用内存的,那么排查错误将是一项非常艰难的...

2016-11-10 00:00:07

阅读数:4560

评论数:4

Android RecyclerView工作原理分析(下)

在RecyclerView中存在一个叫“预布局”的阶段,当然这个是我自己作的翻译,本来叫pre layout,与之对应的还有个叫post layout的阶段,它们分别发生在真正的子控件测量&布局的前后。其中pre layout阶段的作用是记录数据集改变前的子控件信息,post layout...

2016-11-05 21:18:49

阅读数:1387

评论数:0

Android RecyclerView工作原理分析(上)

RecyclerView的基本使用并不复杂,只需要提供一个RecyclerView.Apdater的实现用于处理数据集与ItemView的绑定关系,和一个RecyclerView.LayoutManager的实现用于 测量并布局 ItemView。众所周知,android控件的绘制可以分为3个步骤...

2016-11-05 21:03:50

阅读数:6850

评论数:1

Android View的绘制流程三部曲

如果我们用面向对象的思维方式来思考,就会觉的View的绘制机制是很合理,很科学的。我们要在一张纸上画一幅画,首先我们要测量一下这幅画有多大吧,然后确定在纸的哪个地方画会显得比较美观,最后才是用画笔工具将画绘制在纸上。 在Android中也是一样的。View的绘制流程主要是指measure,layo...

2016-10-24 00:28:29

阅读数:3591

评论数:1

Android Service的绑定过程

通常我们使用Service都要和它通信,当想要与Service通信的时候,那么Service要处于绑定状态的。然后客户端可以拿到一个Binder与服务端进行通信,这个过程是很自然的。那你真的了解过Service的绑定过程吗?为什么可以是Binder和Service通信?

2016-10-18 10:10:07

阅读数:3725

评论数:2

Android Service的启动过程

刚开始学习Service的时候以为它是一个线程的封装,也可以执行耗时操作。其实不然,Service是运行在主线程的。直接执行耗时操作是会阻塞主线程的。长时间就直接ANR了。我们知道Service可以执行一些后台任务,是后台任务不是耗时的任务,后台和耗时是有区别的喔。 这样就很容易想到音乐播放器,...

2016-10-14 21:26:56

阅读数:4581

评论数:2

Android Context getSystemService分析

当我们希望获取到系统服务时,可以调用Context的getSystemService方法,那么getSystemService又是怎么工作的呢?Activity是一个Context,他调用getSystemService时,会调用到Context的包装类ContextWrapper的getSyst...

2016-10-11 17:08:16

阅读数:6557

评论数:0

Android Activity的启动过程

ActivityThread的main()方法究竟做了什么工作?main方法代码并不长,但行行珠玑。我也打开源码去看了main方法,之后还鼠标滑滑滑大致看了ActivityThread,发现了performLaunchActivity方法,这个方法分明就是用来启动Activity的,从源码的角度来...

2016-10-07 21:36:06

阅读数:3179

评论数:2

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