自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丶一个有梦想的老实人 的博客

一切只因是个老实人!

  • 博客(134)
  • 资源 (1)
  • 收藏
  • 关注

原创 二十三、 View 的事件体系(1)--- View 基础知识

什么是 View: View 是 Android 中所有控件的基类。它是一种界面层的控件的一种抽象,代表一个控件。我们平常使用的 TextView 和 ImageView 等都是继承自 View 的,源码如下:public class TextView extends View implements ViewTreeObserver.OnPreDrawListener { ... ...

2019-06-06 22:58:27 972

原创 二十二、 View 的工作原理(6)--- View 的 draw 过程

前面学习了 View 三大流程中的两个:measure 过程(确定 View 的测量宽高)、layout 过程(确定 View 的最终宽高和四个顶点的位置)。下面学习 View 三大流程中的最后一个 --- draw 过程(绘制)。 下面看一下 View 中的 draw() 方法实现:/** * 实现视图时,请执行 onDraw() 方法,而不是覆盖这个方法。如果确实需要...

2019-06-06 22:32:47 371

原创 二十一、 View 的工作原理(5)--- View 的 layout 过程

前面学习了 View 三大流程中的 measure 过程,measure 过程确定了 View 的测量宽/高。这篇学习三大流程中的 layout 过程,它确定了 View 的最终宽/高和四个顶点的位置。我们知道,Android 中所有的控件组成可以看成一个 View 树状结构,总体分为两类:不包含子元素的普通 View 和包含子元素的 ViewGroup。当 ViewGroup 位置确定后...

2019-06-04 21:23:08 293

原创 二十、 View 的工作原理(4)--- 获取 View 的测量宽/高

通过上一篇对 View 的 measure 过程学习,我们知道,当 measure 过程完成之后我们就可以获取到 View 的测量宽/高。但是有一个问题就是 View 的 measure 过程和 Activity 的生命周期方法不是同步执行的,所以我们并不能保证在 Activity 的某个生命周期中去准确获取到 View 的测量宽/高,下面学习一下刚哥提供的四种方法: 方法一: ...

2019-06-03 22:35:25 295

原创 十九、 View 的工作原理(3)--- View 的工作流程之 measure 过程

前面说过了,View 的三大流程 --- measure 过程、layout 过程、draw 过程,即测量、布局和绘制。其中 measure 确定 View 的测量宽/高,layout 确定 View 的最终宽/高和四个顶点的位置,而 draw 则将 View 绘制到屏幕上。 这里我们要学习的是 measure 过程,它分为两种情况: 1. 针对一个原始的 View,那...

2019-06-01 19:56:44 355

原创 十八 、 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 303

原创 十七 、 View 的工作原理(1)--- View 绘制相关基础知识

首先我们看一下 Android 中的 UI 界面架构: 上面这个图就是 Android 中的 UI 界面架构图,Activity 对象就是 Android System 提供的我们所看到的 UI 界面。从上图可以看到,每个 Activity 都包含一个 Window 对象(Window 类是抽象类,PhoneWindow 是 Window 类的具体实现类),在 Android 中 W...

2019-05-30 22:53:45 210

原创 十六 、 Android 中的 IPC 总结

到此,Android 中几种常用的 IPC 方式以及写完,共有 6 种: Bundle、文件共享、Messenger、ContentProvider、AIDL、Socket,下面看一下它们各自的优缺点以及使用场景: 1. Bundle: 它的优点就是使用起来很简单,缺点是支持的数据类型不多。适用场景:Android 中四大组件之间的进程间通信(通过隐式 Intent 进...

2019-05-29 22:32:35 308

原创 十五 、 Android 中的 IPC 之 AIDL 补充 --- 使用 Binder 连接池

在 Android 多进程通信中,我们使用最多的就是 AIDL。前面我们已经说过了 AIDL 的具体使用方法,客户端连接服务端的 Service,然后通过服务端返回的 Binder 再结合 AIDL 类型接口即可让客户端调用到服务端中的方法并与之进行通信,使用起来很简单。试想一下,如果服务端定义了多个 AIDL 接口,一个 AIDL 接口绑定一个 Service,那岂不是在服务端要开启多个...

2019-05-28 22:53:50 175

原创 十四 、 Android 中的 IPC 方式(6) --- 使用 Socket

什么是Socket? 两台计算机进行通信,在网络中我们可以通过 IP 地址定位到具体的某一台计算机,然后再通过端口号定位到这台计算机的某一个应用程序。这样我们的一台电脑就可以通过 IP 地址和端口号和另一台电脑进行相应的通讯了。那我们定位到了具体的某台计算机怎么和它进行相应的通信呢?他们之间的通信方式就是使用 Socket 提供的编程接口。Socket 称为 "套接字",通俗的理...

2019-05-27 19:09:18 257

原创 十三、 Android 中的 IPC 方式(5) --- 使用 Android 四大组件之一 ContentProvider(内容提供器)

ContentProvider 是 Android 中的四大组件之一,同时也是 Android 系统中的 IPC 方式之一。ContentProvider 的使用一般有两种情况: 1. 使用现有的内容提供器来读取和操作相应程序中的数据。比如我们的应用通过 ContentProvider 访问 Android 系统自带的通讯录应用,并获取通讯录中的联系人信息。 2. 我们...

2019-05-25 14:55:50 473

原创 十二、 Android 中的 IPC 方式(4) --- 使用 AIDL

AIDL(Android Interface Definition Language),Android 接口定义语言。Android 中的 IPC 方式之一。前面说过的 IPC 方式有 Bundle、文件共享、Messenger,它们都有各自的局限性,比如 Messenger 因为处理消息是一个一个的处理,如果有大量的并发请求,使用它就不合适了。同时,Messenger 的作用主要就是传递...

2019-05-23 21:56:55 307

原创 十一、 Android 中的 IPC 方式(3) --- 使用 Messenger

Messenger 是 Android 中的一种轻量级的 IPC 方案。它可以翻译为信使,是 Android 中的一个类,通过它可以在不同进程间传递 Message 对象,在 Message 中放入我们需要传递的数据,就可以轻松地实现数据的进程间传递了。下面看一下 Messenger 类的源码:/** 可以看到 Messenger 实现了 Parcelable 接口,所以它可以在进...

2019-05-21 22:09:05 216

原创 九、Android 中的 IPC 方式(1) --- 使用 Bundle

在 Android 四大组件中的其中三个(Activity、Service、BroadcastReceiver)都是支持在 Intent 中传递 Bundle 数据的。我们通过 Intent 源码看到,通过 Intent 中的putExtra() 方法携带 Bundle 数据,然后在另一个组件再通过 getBundleExtra() 方法取出 Bundle 数据:public In...

2019-05-18 21:39:36 329

原创 八、Android中 IPC 机制(5)之 Binder --- Android 应用层分析

什么是 Binder?通过上一篇文章的分析,我们知道了 Binder 就是 Android 系统自己提供的一种跨进程通信的方式,该通信方式在 Linux 中没有。那我们该如何使用它完成跨进程通信呢?这个时候,就从 Android 应用层来出发,Android 系统提供了一个 Binder 类,而这个类对象就是 Server 端和 Client 端进行通信的媒介,当 bindService ...

2019-05-17 21:05:01 266

转载 七、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 273

原创 六、Android中 IPC 机制(3)之序列化---Parcelable 接口

为什么要使用 Parcelable 接口: 和 Serializable 接口类似,都是为一个类实现序列化和可序列化功能,以让该类的对象可以通过 Intent 和 Binder 传递。Parcelable 接口和 Serializable 接口的区别: 1. Serializable 接口是 java 提供的原生序列化接口,使用起来简单但是由于它的序列化和反序列化过程需要大...

2019-05-14 19:30:21 236

原创 五、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 354

原创 四、Android中 IPC 机制(1)

Android IPC 简介: IPC(Inter-Process Communication),进程间通信。也就是两个进程之间进行数据交换的过程。Android 中一个应用的打开就相当于一个进程在虚拟机上的运行。Android 中 IPC 使用场景: 1. 一个应用采用多进程方式运行。 2. 不同的应用之间通过 IPC 机制进行数据通信。 Android 中开启...

2019-05-11 15:50:16 324

原创 java(17): Java 异常(Exception)

1. Java 中的异常分为两大类: a. Checked exception (非 Runtime Exception) b. Unchecked exception (Runtime Exception)2. Java 中所有的异常类都会直接或者间接的继承自 Exception。3. RunTimeException 也是继承自 Exception 类,它是运行时异...

2019-05-10 19:13:05 862

原创 三、Intent 和 Intent过滤器(IntentFilter)

Intent(意图): Intent 是一个消息传递对象,是我们要执行操作的一个抽象描述。我们可以使用它在相应的组件中传递消息和请求。下面是它的主要使用场景: 1. 启动Activity 通过 startActivity() 或者 startActivityForResult() 。参数 intent 描述了要启动的 activity 以及可以携带希望传递给新 act...

2019-05-09 20:56:41 2557

原创 java(16):Java Annotation(Java 注解)

目标:掌握 Java Annotation 特性与使用方式Annotation 工作方式: 从 Java5.0 版本发布以来,5.0 平台提供了一个正式的 annotation(注解) 功能:允许开发者定义、使用自己的 annotation 类型。此功能由一个定义 annotation 类型的语法和一个描述 annotation 声明的语法、读取 annotation 的 API、一...

2019-05-08 14:29:48 489

原创 二、Activity 的启动模式

一、四种启动模式:① standard(标准模式) 这个是系统的默认模式。在这种模式下,每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,并且谁启动了这个 Activity,那么这个 Activity 就运行在启动它的那个 Activity 所在的栈中。eg:// FirstActivity.javaIntent intent =...

2019-05-07 19:45:21 2196

原创 java(15): 动态代理模式解析

首先看一下 java 中的动态代理类:1. Java 动态代理类位于 java.lang.reflect 包下,一般主要涉及到以下两个类:a. Interface InvocationHandler:该接口中仅定义了一个方法(该方法在代理类中动态实现):/** 第一个参数 proxy 是代理类;第二个参数 method 是被代理的方法; 第三个是该代理方法的参数数组。*/pub...

2019-05-06 14:38:48 264

原创 Java(14):反射(3) 与 静态代理模式解析

1. 总所周知 Java 有个 Object class,是所有 Java classes 的继承根源,其内声明了数个应该在所有 Java class 中被改写的 methods:hashCode()、equals()、clone()、toString()、getClass() 等。2. Class 类十分特殊。它和一般的 classes 一样继承自 Object 类,其...

2019-05-06 14:31:32 269

原创 Java(13):反射(2)

关于 Class 类、Method 类以及 Field 类的使用方式解析:1. 要想使用反射,首先需要获得待处理类或对象所对应的 Class 对象。2. 获取某个类或某个对象所对应的 Class 对象的常用 3 种方式: a. 使用 Class 类的静态方法 forName();// 参数为要获取的 Class 类的包名,eg: Class<?> classTy...

2019-05-05 14:30:07 406

原创 java(12):反射(1)

Java 语言的反射机制: 1. 在 Java 运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法(包括它的私有属性和方法)?对于任意一个对象,能否调用它的任意一个方法(包括它的私有方法)?答案是肯定的。 这种动态获取类的信息以及动态调用对象的方法的功能来自于 Java 语言的反射(Reflection)机制。 2. Java 反射主要提供了下面四...

2019-05-05 14:18:49 319

原创 java面试 3. java中 static 相关

问题引入:eg1:public class StaticTest { // ① private static StaticTest st = new StaticTest(); // ② public static int count1; // ③public static int count2 = 0; // ④...

2019-04-29 14:57:35 468

原创 java面试 2. java中方法参数传递(值传递)

1. 原生数据类型参数 --- 值传递eg:public class ParamTest {public void changeInt(int ym){ym = 3;}public static void main(String[] args) {int ym = 1;ParamTest paramTe...

2019-04-29 14:53:57 535

原创 java面试 1. String 相关陷阱

1.public class StringTest {public static void main(String[] args) {Object object = new Object();Object object2 = new Object();System.out.println("1: " + (object == o...

2019-04-29 14:50:11 265

原创 java(11): Object 类学习 和 String 陷阱分析

1. 相等性的比较(==) a. 对于原生数据类型来说,比较的是左右两边的值是否相等。 b. 对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。2. Object 类是所有对象的父类 。3.public class StringTest {public static void main(String[] args...

2019-04-25 23:03:44 251

原创 1. lambda 表达式与函数式接口

直观认识一下 Lambda 表达式: 简单的说就是一种紧凑的、传递行为的方式。也可以理解为一种匿名函数:它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常的列表。通过代码展示一下:// 使用匿名内部类的方式jButton.addActionListener(new ActionListener() {@Overridepublic v...

2019-04-25 17:52:15 493

原创 同一个 Activity 中 fragment 之间的跳转处理

这里我们有两种方法:方法一: 直接在 Fragment 中获取托管它的 activity 中的 FragmentManager,然后直接提交事务进行替换:// AFragment.java (这里是从 AFragment 跳转到 BFragment)BFragment bFragment = BFragment.newInstance();FragmentManager ...

2019-04-24 21:37:18 2189

原创 一、Activity 的生命周期

点击查看大图一、正常情况下生命周期:点击查看大图正常情况下的 7 种生命周期:单击查看大图针对下面几种情况,当前 Activity 生命周期回调:① 当前 Activity 第一次启动时: onCreate() -> onStart() -> onResume()。② 用户跳转到新的 Activity 或者 按下 Home 键回到桌面时:onPa...

2019-04-19 22:49:36 367

原创 1.2.JVM 执行分析之 Java 对象访问模式

我们在写 Java 程序的时候,比如在一个方法中创建一个对象 (Object object = new Object())。实际上这里再 Java 虚拟机中分两步: 1. Object object; // 此时在 Java 虚拟机栈中的本地变量表创建一个 reference 类型数据。 2. object = new Obejct(); // 此时在 Java 堆中创...

2019-04-10 22:46:13 215

原创 1.1.JVM 执行分析之Java 内存模型概览

一、Java 程序执行流程:点击图片可看大图 如上图所示,一个 Java 源程序先经过 Java 编译器编译成 Java 字节码文件(.class 文件),然后经过 ClassLoader(类加载器)进行加载。每当使用了类加载器进行类加载之后,实际上就表示启动了一个 JVM 的进程。而在该进程中就有它自己的处理方式。当一个程序执行之后会将此程序所需要的内容都加载到运行时数据区中,我...

2019-04-10 21:10:08 242

原创 0. Java虚拟机

Java虚拟机:Java 最大的特点在于其可移植性。对于可移植性而言,其本身的实现关键在于Java语言的运行机制和它对应的虚拟机(JVM)。关于运行机制: 从传统的编程语言来说有两种运行机制: 编译型和解释型。问题一: 解释型语言和编译型语言说明? 首先我们要明白,计算机是不能直接理解例如c、c++、java 等高级语言的,它只能理解机器语言,所以我们必须把高级语言转换成机器语...

2019-04-08 22:10:07 224

原创 java(10): 抽象类是否可以没有方法和属性?

答案是肯定的,可以。 抽象类中可以没有抽象方法,但有抽象方法的一定是抽象类。所以,java中 抽象类里面可以没有抽象方法。注意即使是没有抽象方法和属性的抽象类,也不能被实例化。...

2019-01-04 19:18:27 6066

原创 java(9): 抽象类与接口的应用场景

抽象类的应用场景:a. 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。b. 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。接口的应用场景:a. 一般情况下,实现类和它的抽象类之前具有 "is-a" 的关系,但是如果我们想达到同样的目的,但是又不存在这种关系时,使用接口。b. 由于 jav...

2019-01-04 18:07:51 3399

原创 java(8): 抽象类的意义

1.可以把同一种类型的对象共性抽取出来后封装成抽象类,子类通过继承该抽象类达到代码编写简洁,易于维护的目的。2.通过抽象类定义一系列规范,继承该抽象类的子类必须实现相应的抽象方法,使得该子类具有相应的规范性。3.实现多态。 ...

2019-01-04 17:01:02 918 2

fragment生命周期代码示例

fragment 代码示例

2019-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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