Android开发艺术探究---笔记
丶一个有梦想的老实人
if have a day...
展开
-
一、Activity 的生命周期
点击查看大图一、正常情况下生命周期:点击查看大图正常情况下的 7 种生命周期:单击查看大图针对下面几种情况,当前 Activity 生命周期回调:① 当前 Activity 第一次启动时: onCreate() -> onStart() -> onResume()。② 用户跳转到新的 Activity 或者 按下 Home 键回到桌面时:onPa...原创 2019-04-19 22:49:36 · 375 阅读 · 0 评论 -
十六 、 Android 中的 IPC 总结
到此,Android 中几种常用的 IPC 方式以及写完,共有 6 种: Bundle、文件共享、Messenger、ContentProvider、AIDL、Socket,下面看一下它们各自的优缺点以及使用场景: 1. Bundle: 它的优点就是使用起来很简单,缺点是支持的数据类型不多。适用场景:Android 中四大组件之间的进程间通信(通过隐式 Intent 进...原创 2019-05-29 22:32:35 · 328 阅读 · 0 评论 -
十二、 Android 中的 IPC 方式(4) --- 使用 AIDL
AIDL(Android Interface Definition Language),Android 接口定义语言。Android 中的 IPC 方式之一。前面说过的 IPC 方式有 Bundle、文件共享、Messenger,它们都有各自的局限性,比如 Messenger 因为处理消息是一个一个的处理,如果有大量的并发请求,使用它就不合适了。同时,Messenger 的作用主要就是传递...原创 2019-05-23 21:56:55 · 313 阅读 · 0 评论 -
九、Android 中的 IPC 方式(1) --- 使用 Bundle
在 Android 四大组件中的其中三个(Activity、Service、BroadcastReceiver)都是支持在 Intent 中传递 Bundle 数据的。我们通过 Intent 源码看到,通过 Intent 中的putExtra() 方法携带 Bundle 数据,然后在另一个组件再通过 getBundleExtra() 方法取出 Bundle 数据:public In...原创 2019-05-18 21:39:36 · 335 阅读 · 0 评论 -
十八 、 View 的工作原理(2)---理解 MeasureSpec
MeasureSpec 是什么: 它是 Android 源码中 View.java 中的一个静态内部类:public static class MeasureSpec {private static final int MODE_SHIFT = 30;private static final int MODE_MASK= 0x3 << MODE...原创 2019-05-31 22:43:57 · 308 阅读 · 0 评论 -
二十二、 View 的工作原理(6)--- View 的 draw 过程
前面学习了 View 三大流程中的两个:measure 过程(确定 View 的测量宽高)、layout 过程(确定 View 的最终宽高和四个顶点的位置)。下面学习 View 三大流程中的最后一个 --- draw 过程(绘制)。 下面看一下 View 中的 draw() 方法实现:/** * 实现视图时,请执行 onDraw() 方法,而不是覆盖这个方法。如果确实需要...原创 2019-06-06 22:32:47 · 376 阅读 · 0 评论 -
十九、 View 的工作原理(3)--- View 的工作流程之 measure 过程
前面说过了,View 的三大流程 --- measure 过程、layout 过程、draw 过程,即测量、布局和绘制。其中 measure 确定 View 的测量宽/高,layout 确定 View 的最终宽/高和四个顶点的位置,而 draw 则将 View 绘制到屏幕上。 这里我们要学习的是 measure 过程,它分为两种情况: 1. 针对一个原始的 View,那...原创 2019-06-01 19:56:44 · 361 阅读 · 0 评论 -
二十三、 View 的事件体系(1)--- View 基础知识
什么是 View: View 是 Android 中所有控件的基类。它是一种界面层的控件的一种抽象,代表一个控件。我们平常使用的 TextView 和 ImageView 等都是继承自 View 的,源码如下:public class TextView extends View implements ViewTreeObserver.OnPreDrawListener { ... ...原创 2019-06-06 22:58:27 · 975 阅读 · 0 评论 -
十七 、 View 的工作原理(1)--- View 绘制相关基础知识
首先我们看一下 Android 中的 UI 界面架构: 上面这个图就是 Android 中的 UI 界面架构图,Activity 对象就是 Android System 提供的我们所看到的 UI 界面。从上图可以看到,每个 Activity 都包含一个 Window 对象(Window 类是抽象类,PhoneWindow 是 Window 类的具体实现类),在 Android 中 W...原创 2019-05-30 22:53:45 · 219 阅读 · 0 评论 -
二十、 View 的工作原理(4)--- 获取 View 的测量宽/高
通过上一篇对 View 的 measure 过程学习,我们知道,当 measure 过程完成之后我们就可以获取到 View 的测量宽/高。但是有一个问题就是 View 的 measure 过程和 Activity 的生命周期方法不是同步执行的,所以我们并不能保证在 Activity 的某个生命周期中去准确获取到 View 的测量宽/高,下面学习一下刚哥提供的四种方法: 方法一: ...原创 2019-06-03 22:35:25 · 302 阅读 · 0 评论 -
十五 、 Android 中的 IPC 之 AIDL 补充 --- 使用 Binder 连接池
在 Android 多进程通信中,我们使用最多的就是 AIDL。前面我们已经说过了 AIDL 的具体使用方法,客户端连接服务端的 Service,然后通过服务端返回的 Binder 再结合 AIDL 类型接口即可让客户端调用到服务端中的方法并与之进行通信,使用起来很简单。试想一下,如果服务端定义了多个 AIDL 接口,一个 AIDL 接口绑定一个 Service,那岂不是在服务端要开启多个...原创 2019-05-28 22:53:50 · 184 阅读 · 0 评论 -
八、Android中 IPC 机制(5)之 Binder --- Android 应用层分析
什么是 Binder?通过上一篇文章的分析,我们知道了 Binder 就是 Android 系统自己提供的一种跨进程通信的方式,该通信方式在 Linux 中没有。那我们该如何使用它完成跨进程通信呢?这个时候,就从 Android 应用层来出发,Android 系统提供了一个 Binder 类,而这个类对象就是 Server 端和 Client 端进行通信的媒介,当 bindService ...原创 2019-05-17 21:05:01 · 270 阅读 · 0 评论 -
十四 、 Android 中的 IPC 方式(6) --- 使用 Socket
什么是Socket? 两台计算机进行通信,在网络中我们可以通过 IP 地址定位到具体的某一台计算机,然后再通过端口号定位到这台计算机的某一个应用程序。这样我们的一台电脑就可以通过 IP 地址和端口号和另一台电脑进行相应的通讯了。那我们定位到了具体的某台计算机怎么和它进行相应的通信呢?他们之间的通信方式就是使用 Socket 提供的编程接口。Socket 称为 "套接字",通俗的理...原创 2019-05-27 19:09:18 · 260 阅读 · 0 评论 -
五、Android中 IPC 机制(2)之序列化---Serializable 接口
为什么要使用 Serializable 接口: 我们在进行 Android 开发时,经常使用 Intent 传输数据,比如从 Activity A 跳转到 Activity B 时,通过 intent 传输数据给 Activity B:Intent intent = new Intent(AActivity.this, BActivity.class);intent.putExt...原创 2019-05-13 19:49:18 · 359 阅读 · 0 评论 -
三、Intent 和 Intent过滤器(IntentFilter)
Intent(意图): Intent 是一个消息传递对象,是我们要执行操作的一个抽象描述。我们可以使用它在相应的组件中传递消息和请求。下面是它的主要使用场景: 1. 启动Activity 通过 startActivity() 或者 startActivityForResult() 。参数 intent 描述了要启动的 activity 以及可以携带希望传递给新 act...原创 2019-05-09 20:56:41 · 2598 阅读 · 0 评论 -
六、Android中 IPC 机制(3)之序列化---Parcelable 接口
为什么要使用 Parcelable 接口: 和 Serializable 接口类似,都是为一个类实现序列化和可序列化功能,以让该类的对象可以通过 Intent 和 Binder 传递。Parcelable 接口和 Serializable 接口的区别: 1. Serializable 接口是 java 提供的原生序列化接口,使用起来简单但是由于它的序列化和反序列化过程需要大...原创 2019-05-14 19:30:21 · 240 阅读 · 0 评论 -
二、Activity 的启动模式
一、四种启动模式:① standard(标准模式) 这个是系统的默认模式。在这种模式下,每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,并且谁启动了这个 Activity,那么这个 Activity 就运行在启动它的那个 Activity 所在的栈中。eg:// FirstActivity.javaIntent intent =...原创 2019-05-07 19:45:21 · 2219 阅读 · 0 评论 -
七、Android中 IPC 机制(4)之 Binder --- 底层分析
转载:https://blog.csdn.net/universus/article/details/6211589&https://blog.csdn.net/carson_ho/article/details/73560642摘要 Binder 是 Android 系统进程间通信(IPC)的方式之一。虽然 Linux 系统有比如管道、消息队列、Socket 等 IPC...转载 2019-05-15 21:16:40 · 275 阅读 · 0 评论 -
四、Android中 IPC 机制(1)
Android IPC 简介: IPC(Inter-Process Communication),进程间通信。也就是两个进程之间进行数据交换的过程。Android 中一个应用的打开就相当于一个进程在虚拟机上的运行。Android 中 IPC 使用场景: 1. 一个应用采用多进程方式运行。 2. 不同的应用之间通过 IPC 机制进行数据通信。 Android 中开启...原创 2019-05-11 15:50:16 · 328 阅读 · 0 评论 -
十三、 Android 中的 IPC 方式(5) --- 使用 Android 四大组件之一 ContentProvider(内容提供器)
ContentProvider 是 Android 中的四大组件之一,同时也是 Android 系统中的 IPC 方式之一。ContentProvider 的使用一般有两种情况: 1. 使用现有的内容提供器来读取和操作相应程序中的数据。比如我们的应用通过 ContentProvider 访问 Android 系统自带的通讯录应用,并获取通讯录中的联系人信息。 2. 我们...原创 2019-05-25 14:55:50 · 488 阅读 · 0 评论 -
十一、 Android 中的 IPC 方式(3) --- 使用 Messenger
Messenger 是 Android 中的一种轻量级的 IPC 方案。它可以翻译为信使,是 Android 中的一个类,通过它可以在不同进程间传递 Message 对象,在 Message 中放入我们需要传递的数据,就可以轻松地实现数据的进程间传递了。下面看一下 Messenger 类的源码:/** 可以看到 Messenger 实现了 Parcelable 接口,所以它可以在进...原创 2019-05-21 22:09:05 · 219 阅读 · 0 评论 -
二十一、 View 的工作原理(5)--- View 的 layout 过程
前面学习了 View 三大流程中的 measure 过程,measure 过程确定了 View 的测量宽/高。这篇学习三大流程中的 layout 过程,它确定了 View 的最终宽/高和四个顶点的位置。我们知道,Android 中所有的控件组成可以看成一个 View 树状结构,总体分为两类:不包含子元素的普通 View 和包含子元素的 ViewGroup。当 ViewGroup 位置确定后...原创 2019-06-04 21:23:08 · 302 阅读 · 0 评论