<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[丶一个有梦想的老实人 的博客]]></title><description><![CDATA[一切只因是个老实人！]]></description><link>https://blog.youkuaiyun.com/yz_cfm</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yz_cfm]]></copyright><item><title><![CDATA[二十三、 View 的事件体系（1）--- View 基础知识]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/91051872</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/91051872</guid><author>yz_cfm</author><pubDate>Thu, 06 Jun 2019 22:58:27 +0800</pubDate><description><![CDATA[什么是 View：

  View 是 Android 中所有控件的基类。它是一种界面层的控件的一种抽象，代表一个控件。我们平常使用的 TextView 和 ImageView 等都是继承自 View 的，源码如下：


public class TextView extends View implements ViewTreeObserver.OnPreDrawListener { ... ...]]></description><category></category></item><item><title><![CDATA[二十二、 View 的工作原理（6）--- View 的 draw 过程]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/91047638</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/91047638</guid><author>yz_cfm</author><pubDate>Thu, 06 Jun 2019 22:32:47 +0800</pubDate><description><![CDATA[前面学习了 View 三大流程中的两个：measure 过程（确定 View 的测量宽高）、layout 过程（确定 View 的最终宽高和四个顶点的位置）。下面学习 View 三大流程中的最后一个 --- draw 过程（绘制）。

  下面看一下 View 中的 draw() 方法实现：


/**
 * 实现视图时，请执行 onDraw() 方法，而不是覆盖这个方法。如果确实需要...]]></description><category></category></item><item><title><![CDATA[二十一、 View 的工作原理（5）--- View 的 layout 过程]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90813542</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90813542</guid><author>yz_cfm</author><pubDate>Tue, 04 Jun 2019 21:23:08 +0800</pubDate><description><![CDATA[前面学习了 View 三大流程中的 measure 过程，measure 过程确定了 View 的测量宽/高。这篇学习三大流程中的 layout 过程，它确定了 View 的最终宽/高和四个顶点的位置。我们知道，Android 中所有的控件组成可以看成一个 View 树状结构，总体分为两类：不包含子元素的普通 View 和包含子元素的 ViewGroup。当 ViewGroup 位置确定后...]]></description><category></category></item><item><title><![CDATA[二十、 View 的工作原理（4）--- 获取 View 的测量宽/高]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90760291</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90760291</guid><author>yz_cfm</author><pubDate>Mon, 03 Jun 2019 22:35:25 +0800</pubDate><description><![CDATA[通过上一篇对 View 的 measure 过程学习，我们知道，当 measure 过程完成之后我们就可以获取到 View 的测量宽/高。但是有一个问题就是 View 的 measure 过程和 Activity 的生命周期方法不是同步执行的，所以我们并不能保证在 Activity 的某个生命周期中去准确获取到 View 的测量宽/高，下面学习一下刚哥提供的四种方法:

  方法一: ...]]></description><category></category></item><item><title><![CDATA[十九、 View 的工作原理（3）--- View 的工作流程之 measure 过程]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90732765</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90732765</guid><author>yz_cfm</author><pubDate>Sat, 01 Jun 2019 19:56:44 +0800</pubDate><description><![CDATA[前面说过了，View 的三大流程 --- measure 过程、layout 过程、draw 过程，即测量、布局和绘制。其中 measure 确定 View 的测量宽/高，layout 确定 View 的最终宽/高和四个顶点的位置，而 draw 则将 View 绘制到屏幕上。

  这里我们要学习的是 measure 过程，它分为两种情况：

  1. 针对一个原始的 View，那...]]></description><category></category></item><item><title><![CDATA[十八 、 View 的工作原理（2）---理解 MeasureSpec]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90722051</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90722051</guid><author>yz_cfm</author><pubDate>Fri, 31 May 2019 22:43:57 +0800</pubDate><description><![CDATA[MeasureSpec 是什么：

  它是 Android 源码中 View.java 中的一个静态内部类:


public static class MeasureSpec {

private static final int MODE_SHIFT = 30;
private static final int MODE_MASK= 0x3 &lt;&lt; MODE...]]></description><category></category></item><item><title><![CDATA[十七 、 View 的工作原理（1）--- View 绘制相关基础知识]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90676956</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90676956</guid><author>yz_cfm</author><pubDate>Thu, 30 May 2019 22:53:45 +0800</pubDate><description><![CDATA[首先我们看一下 Android 中的 UI 界面架构:



  上面这个图就是 Android 中的 UI 界面架构图，Activity 对象就是 Android System 提供的我们所看到的 UI 界面。从上图可以看到，每个 Activity 都包含一个 Window 对象（Window 类是抽象类，PhoneWindow 是 Window 类的具体实现类），在 Android 中 W...]]></description><category></category></item><item><title><![CDATA[十六 、 Android 中的 IPC 总结]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90613126</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90613126</guid><author>yz_cfm</author><pubDate>Wed, 29 May 2019 22:32:35 +0800</pubDate><description><![CDATA[到此，Android 中几种常用的 IPC 方式以及写完，共有 6 种: Bundle、文件共享、Messenger、ContentProvider、AIDL、Socket，下面看一下它们各自的优缺点以及使用场景:

  1. Bundle:

  它的优点就是使用起来很简单，缺点是支持的数据类型不多。适用场景：Android 中四大组件之间的进程间通信（通过隐式 Intent 进...]]></description><category></category></item><item><title><![CDATA[十五 、 Android 中的 IPC 之 AIDL 补充 --- 使用 Binder 连接池]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90612508</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90612508</guid><author>yz_cfm</author><pubDate>Tue, 28 May 2019 22:53:50 +0800</pubDate><description><![CDATA[在 Android 多进程通信中，我们使用最多的就是 AIDL。前面我们已经说过了 AIDL 的具体使用方法，客户端连接服务端的 Service，然后通过服务端返回的 Binder 再结合 AIDL 类型接口即可让客户端调用到服务端中的方法并与之进行通信，使用起来很简单。试想一下，如果服务端定义了多个 AIDL 接口，一个 AIDL 接口绑定一个 Service，那岂不是在服务端要开启多个...]]></description><category></category></item><item><title><![CDATA[十四 、 Android 中的 IPC 方式（6） --- 使用 Socket]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90550691</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90550691</guid><author>yz_cfm</author><pubDate>Mon, 27 May 2019 19:09:18 +0800</pubDate><description><![CDATA[什么是Socket？

 两台计算机进行通信，在网络中我们可以通过 IP 地址定位到具体的某一台计算机，然后再通过端口号定位到这台计算机的某一个应用程序。这样我们的一台电脑就可以通过 IP 地址和端口号和另一台电脑进行相应的通讯了。那我们定位到了具体的某台计算机怎么和它进行相应的通信呢？他们之间的通信方式就是使用 Socket 提供的编程接口。Socket 称为 "套接字"，通俗的理...]]></description><category></category></item><item><title><![CDATA[十三、 Android 中的 IPC 方式（5） --- 使用 Android 四大组件之一 ContentProvider（内容提供器）]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90546638</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90546638</guid><author>yz_cfm</author><pubDate>Sat, 25 May 2019 14:55:50 +0800</pubDate><description><![CDATA[ContentProvider 是 Android 中的四大组件之一，同时也是 Android 系统中的 IPC 方式之一。ContentProvider 的使用一般有两种情况:

 1. 使用现有的内容提供器来读取和操作相应程序中的数据。比如我们的应用通过 ContentProvider 访问 Android 系统自带的通讯录应用，并获取通讯录中的联系人信息。

  2. 我们...]]></description><category></category></item><item><title><![CDATA[十二、 Android 中的 IPC 方式（4） --- 使用 AIDL]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90483404</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90483404</guid><author>yz_cfm</author><pubDate>Thu, 23 May 2019 21:56:55 +0800</pubDate><description><![CDATA[AIDL（Android Interface Definition Language），Android 接口定义语言。Android 中的 IPC 方式之一。前面说过的 IPC 方式有 Bundle、文件共享、Messenger，它们都有各自的局限性，比如 Messenger 因为处理消息是一个一个的处理，如果有大量的并发请求，使用它就不合适了。同时，Messenger 的作用主要就是传递...]]></description><category></category></item><item><title><![CDATA[十一、 Android 中的 IPC 方式（3） --- 使用 Messenger]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90416381</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90416381</guid><author>yz_cfm</author><pubDate>Tue, 21 May 2019 22:09:05 +0800</pubDate><description><![CDATA[Messenger 是 Android 中的一种轻量级的 IPC 方案。它可以翻译为信使，是 Android 中的一个类，通过它可以在不同进程间传递 Message 对象，在 Message 中放入我们需要传递的数据，就可以轻松地实现数据的进程间传递了。下面看一下 Messenger 类的源码：


/*
* 可以看到 Messenger 实现了 Parcelable 接口，所以它可以在进...]]></description><category></category></item><item><title><![CDATA[九、Android 中的 IPC 方式（1） --- 使用 Bundle]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90320850</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90320850</guid><author>yz_cfm</author><pubDate>Sat, 18 May 2019 21:39:36 +0800</pubDate><description><![CDATA[在 Android 四大组件中的其中三个（Activity、Service、BroadcastReceiver）都是支持在 Intent 中传递 Bundle 数据的。我们通过 Intent 源码看到，通过 Intent 中的putExtra() 方法携带 Bundle 数据，然后在另一个组件再通过 getBundleExtra() 方法取出 Bundle 数据：


public In...]]></description><category></category></item><item><title><![CDATA[八、Android中 IPC 机制（5）之 Binder --- Android 应用层分析]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90300279</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90300279</guid><author>yz_cfm</author><pubDate>Fri, 17 May 2019 21:05:01 +0800</pubDate><description><![CDATA[什么是 Binder？通过上一篇文章的分析，我们知道了 Binder 就是 Android 系统自己提供的一种跨进程通信的方式，该通信方式在 Linux 中没有。那我们该如何使用它完成跨进程通信呢？这个时候，就从 Android 应用层来出发，Android 系统提供了一个 Binder 类，而这个类对象就是 Server 端和 Client 端进行通信的媒介，当 bindService ...]]></description><category></category></item><item><title><![CDATA[七、Android中 IPC 机制（4）之 Binder --- 底层分析]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90245193</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90245193</guid><author>yz_cfm</author><pubDate>Wed, 15 May 2019 21:16:40 +0800</pubDate><description><![CDATA[转载:https://blog.youkuaiyun.com/universus/article/details/6211589&amp;https://blog.youkuaiyun.com/carson_ho/article/details/73560642

摘要

  Binder 是 Android 系统进程间通信（IPC）的方式之一。虽然 Linux 系统有比如管道、消息队列、Socket 等 IPC...]]></description><category></category></item><item><title><![CDATA[六、Android中 IPC 机制（3）之序列化---Parcelable 接口]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90213280</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90213280</guid><author>yz_cfm</author><pubDate>Tue, 14 May 2019 19:30:21 +0800</pubDate><description><![CDATA[为什么要使用 Parcelable 接口：

  和 Serializable 接口类似，都是为一个类实现序列化和可序列化功能，以让该类的对象可以通过 Intent 和 Binder 传递。

Parcelable 接口和 Serializable 接口的区别：

  1. Serializable 接口是 java 提供的原生序列化接口，使用起来简单但是由于它的序列化和反序列化过程需要大...]]></description><category></category></item><item><title><![CDATA[五、Android中 IPC 机制（2）之序列化---Serializable 接口]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90179887</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90179887</guid><author>yz_cfm</author><pubDate>Mon, 13 May 2019 19:49:18 +0800</pubDate><description><![CDATA[为什么要使用 Serializable 接口：

  我们在进行 Android 开发时，经常使用 Intent 传输数据，比如从 Activity A 跳转到 Activity B 时，通过 intent 传输数据给 Activity B：


Intent intent = new Intent(AActivity.this, BActivity.class);
intent.putExt...]]></description><category></category></item><item><title><![CDATA[四、Android中 IPC 机制（1）]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90110335</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90110335</guid><author>yz_cfm</author><pubDate>Sat, 11 May 2019 15:50:16 +0800</pubDate><description><![CDATA[Android IPC 简介：

  IPC（Inter-Process Communication），进程间通信。也就是两个进程之间进行数据交换的过程。Android 中一个应用的打开就相当于一个进程在虚拟机上的运行。

Android 中 IPC 使用场景：


	1. 一个应用采用多进程方式运行。
	
	
	2. 不同的应用之间通过 IPC 机制进行数据通信。
	
Android 中开启...]]></description><category></category></item><item><title><![CDATA[java(17): Java 异常（Exception）]]></title><link>https://blog.youkuaiyun.com/yz_cfm/article/details/90080262</link><guid>https://blog.youkuaiyun.com/yz_cfm/article/details/90080262</guid><author>yz_cfm</author><pubDate>Fri, 10 May 2019 19:13:05 +0800</pubDate><description><![CDATA[1. Java 中的异常分为两大类：

  a. Checked exception (非 Runtime Exception)

  b. Unchecked exception (Runtime Exception)

2. Java 中所有的异常类都会直接或者间接的继承自 Exception。

3. RunTimeException 也是继承自 Exception 类，它是运行时异...]]></description><category></category></item></channel></rss>