自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Handler 的基本使用、常见问题的源码解析以及运行机制源码讲解

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、定义一套Android消息传递机制/异步通信机制。二、作用多线程场景下,子线程需要将更新UI操作信息传递到主线程,实现异步消息的处理。三、使用使用的方式有 2 种:一种是通过 sendMessage() 的方式来实现异步通信。一种是通过 mHandler.post() 的方式来实现异步通信。3.1 se...

2020-02-05 00:29:48 3062 1

原创 专治花里胡哨(四)征服自定义View,Canvas 各种详细全面的使用方法

看本篇文章前,请先阅读 专治花里胡哨(二)征服自定义View,各种最基本的drawXXX()方法你都会了吗?

2021-09-29 14:16:17 290

原创 App 线程优化的各种方案

作为性能优化的第六篇,我们就来说一说 线程优化。零、前言对于线程优化,可能有的人说就是把 new Thread 改成线程池,这么说可能有点差强人意。那么本篇文章可能会稍微开拓一下视野。一、Android 线程调度机制1.1 线程调度原理任意时刻,只有一个线程占用 CPU,处于运行状态。多线程并发:轮流获取 CPU 使用权。JVM 负责线程调度:按照特定机制分配 CPU 使用权。1.2 线程调度机制分时调度模型:所有的线程轮流获取 CPU 使用权,平均分配每个线程占用时.

2021-09-26 17:04:26 645 1

原创 Flutter 开发中最常用的基础组件(文本,图片,按钮,对话框,布局,卡片)

在 Flutter 开发中最实用的 Dart 语法知识 的文章中,介绍了 Dart 语法,本篇文章就来说一说 Flutter 开发中常见的组件的用法。一、Widget(组件)概述在 Flutter 开发中,记住一句话,一切皆组件。Flutter 的组件很多,要完全记住是不可能的,我的方法就是记住常见的,然而对于组件的属性,这个不需要记住,根据实际开发需求,需要什么属性,直接点开源码,去查看一下这个组件是否有需要的属性即可。1.1 概念Widget 是 Flutter 应用用户界面的

2021-08-23 08:53:56 863

原创 (一)计算机组成原理概述

工欲善其事,必先利其器。 地基很重要,地基很重要,地基很重要,重要是说三遍!!!一、计算机发展简史二、计算机分类1. 超级计算机功能最强、运算速度最快、存储容量最大的计算机。多用于国家高科技领域和尖端技术研究。2. 大型计算机又称大型机、大型主机、主机等。具有高性能,可处理大量数据与复杂的运算。在大型机市场领域,IBM占据着很大的份额。3. 迷你计算机(服务器)也称为小型机,普通服务器。不需要特殊的空间场所。具备不错的算力,可以完成较复杂的运算。4. 工.

2021-02-24 09:01:14 317

原创 Flutter 开发中最实用的 Dart 语法知识

零、前言都说 Flutter 是谷歌的新宠,这段时间有空,就学习了一下 Dart 语法。本篇文章将会详细全面的介绍 Dart 常用语法。一、变量和常量在 Drat 语言中,一切皆对象,对象的默认值都是 null。对于变量,首先要记住的一点是:没有初始化的变量默认值都是 null。1. 变量: var data = 'data'; dynamic data1 = 'data1'; Object data2 = 'data2'; String data3 = 'data3';

2020-08-24 16:32:08 1257

原创 实际开发中 Git 使用心得体会及常用命令总结

这篇博客写作的目的是为了记录一下自己学习及使用 Git 的一些心得体会,作为程序员必会的技能,希望能够和大家分享一下自己对于 Git 的操作与理解。1. 查看 git 版本git --version2. 配置或清除用户信息# local:区域为本仓库# global: 当前用户的所有仓库# system: 本系统的所有用户# 配置git config [--local | --global | --system] user.name 'Your name'git config [.

2020-08-24 15:36:42 278

原创 专治花里胡哨(三)征服自定义View,画笔 Paint 的各种详细全面的使用方法

看本篇文章前,请先阅读作为 花里胡哨系列的第四篇,这篇文章就详细的讲解一下 Paint 的各种 api 的使用。我们要知道的是 View 上的内容都是通过 Canvas 画出来的,但是画成什么样子,都是需要通过 Paint 来指挥的,所以说对于 Paint 了解的越详细,那么我们在后期绘制时,可用的方法就越多。废话不多说,马上进入主题。本人水平有限,如有错误,请在下方评论中多多指正。一、 创建画笔// 1.创建一个默认画笔,使用默认的配置Paint()// 2.创建一个新画笔,并通过 fla

2020-07-01 14:57:48 405

原创 专治花里胡哨(二)征服自定义View,各种最基本的几何图形的 draw() 方法的详细使用

作为 花里胡哨系列的第二篇,本篇没有什么废话,都是学好自定义View所需要的基本知识,打个比方,学英语要先会认识单词,学自定义View也一样,这些基本知识不知道,想学好,好像有点痴人说梦,所以还是要有点心理准备的。本篇文章篇幅过长,可以点个 收藏 慢慢看。但是切记,看后还是要多多练习。1.坐标系既然是自己画一个自定义View,那么我就需要知道我在什么位置画,对吧,所以就需要知道 Android 中是如何定义坐标系的,各个自定义View的博客中都写烂了,我就无耻的盗个图了,嘿嘿。对上面的图做一个

2020-06-23 10:45:36 360

原创 专治花里胡哨(一)征服自定义View,写个最简单的自定义 View

作为 花里胡哨系列的第一篇,聊点五毛钱的,之所以写这个自定义系列文章,主要还是希望大家,也包括自己,以后能在面对产品脑洞和炫酷的设计时,能说一句小意思,分分钟给你实现。同时也想把自己在这方面所知道的,走过的路和大家分享一下,有错误请多多指正。我们先来看一下写一个最简单的自定义View,我觉得只要接触过 Android 开发,哪怕就一个月,也知道要写一个类继承自View,对吧,我们来看看:public class CircleView extends View { }这个时候 AS 会报错,傻子

2020-06-18 20:38:17 255

原创 JavaScript 的一点浅显见解

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、基本类型与引用类型区别基本类型的值是不可修改。引用类型的值是可以修改的。 var num = 4; num = 2;//只是覆盖,不是修改再比如说以下代码:var str = 'string';var anotherStr = str.replace('s'," ")console.log(str + ' '+anotherStr);//string tring但是对于引用类型,确实可以修改值的:var pe.

2020-06-17 09:16:37 205

原创 Javascript 基础知识的必会知识点

子曰:温故而知新,可以为师矣。 《论语》-- 孔子JavaScript 是一种基于对象和事件驱动的客户端脚本语言,完整的 Javascript 是由 ECMAScript(语法)、Browser Objects(DOM、BOM)(特性组成的)。一、变量声明与赋值<script> // 声明保存用户名的变量 var age=18; // 一次声明多个变量 var number = "18",age = 18, ad.

2020-06-08 15:05:02 155

原创 Android 之 Kotlin 开发入门(变量、数据类型、函数、表达式、循环语句、异常)

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、Boolean 类型val aBoolean:Boolean = trueval anotherBoolean:Boolean = false二、Number 类型//Int类型val aInt:Int = 8val anotherInt:Int = 0xFFval maxInt:Int = Int.MAX_VALUEval minInt:Int = Int.MIN_VALUE//Long类型val maxLong:.

2020-05-27 16:02:40 299

原创 一文带你掌握 CSS3 必会知识点

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、新增基本选择器1. 子元素选择器子元素选择器只能选择某元素的子元素。语法格式:父元素 > 子元素 。<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>子元素选择器</title><style type="text/css">section > d.

2020-05-22 10:32:26 480

原创 一文带你掌握 HTML5 必会知识点

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、新增标签1. 结构标签(块状元素)<article> :标记定义一篇文章。<header> :标记定义一个页面或一个区域的头部。<nav> :标记定义导航链接。<section> :标记定义一个区域。aside :标记定义页面内容部分的侧边栏。hgroup :标记定义文件中一个区块的相关信息。figure :标记定义一组.

2020-05-20 16:26:52 460

原创 一文带你掌握 CSS 必会知识点

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、CSS样式规则CSS 规则由两部分构成:选择器,声明。二、CSS 样式引用<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <.

2020-05-20 14:16:28 1095

原创 一文带你掌握 HTML 必会知识点

一、标题内容<!DOCTYPE html><html><head><!-- 网页头部内容 --><title>标题</title></head><body><!-- 网页主体内容 --> </body></html>二、常用标签<!DOCTYPE html><html><head><title>

2020-05-19 11:37:49 732

原创 App 卡顿优化以及 ANR 分析实战

子曰:温故而知新,可以为师矣。 《论语》-- 孔子作为性能优化专栏的第五篇,我们就来说一说 App 卡顿优化的各种解决方案。一、优化工具CPU Profiler。写在文末纸上得来终觉浅,绝知此事要躬行。 《冬夜读书示子聿》-- 陆游好了,关于 Android 黑白屏由来以及解决方案 就说完了,各位小伙伴可以在项目中使用此方式优化。...

2020-03-17 16:32:04 456

原创 EventBus 3.0 正确使用、原理讲解以及手写实现

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、常规的事件传递Intent 意图: 跳转 + 传参 (局限性非常大)。Handler:通常用来更新主线程 UI,使用不当容易出现内存泄漏。Interface 接口:仅限于同一线程中数据交互。BroadCastReceiver:有序广播 + 无序广播。 onReceive() 方法不能超过 10 秒。AID 跨进程通信:代码...

2020-03-17 09:27:36 324

原创 AOP 实现埋点统计 和 统一登录

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、概念AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。二、AspectJ1. 介绍:面向切面编程的框架,是对 Java 的扩展,而且完全兼容 java 。它定义了 AOP 语法,有一个专门的编译器用来生成遵守...

2020-03-15 17:43:01 503

原创 App 启动优化的各种方案以及实例

子曰:温故而知新,可以为师矣。 《论语》-- 孔子作为性能优化专栏的第二篇,我会详细介绍 App启动优化。阅读本文章前可以先阅读 (一)Android 黑白屏由来以及解决方案,再阅读本篇文章效果更佳。一、App 启动优化介绍1. 背景介绍App 启动速度是用户的第一体验。八秒定律:如果一个网页 8 秒未打开,70% 用户就会放弃等待,用户留存大大降低,这个定律也适合移动端。...

2020-03-14 18:48:17 1049

原创 UI 绘制整体流程的源码解读

子曰:温故而知新,可以为师矣。 《论语》-- 孔子作为 高级UI 专栏 第一篇文章,我们就来说一下最基础的知识–> UI 的绘制流程,本篇文章会从一个个问题出发,然后结合源码去讲解。一、Android 程序如何启动?Activity 生命周期如何调用?众所周知,Java 程序的入口是 main() 方法,那么 Android 程序的入口在哪里,稍微开发时间久一点的都应该知道 ...

2020-03-12 12:26:33 162

原创 App 内存优化的原理、工具使用以及实际案例

子曰:温故而知新,可以为师矣。 《论语》-- 孔子作为性能优化专栏的第五篇,阅读本文章前可以先阅读 (四)内存优化前奏篇(Java虚拟机、垃圾回收机制、内存泄漏/溢出/抖动,再阅读本篇文章效果更佳。本篇文章就来讲一下在项目中如何使用工具来分析内存泄漏。一、 模拟内存泄漏代码我这边先写一个引发内存泄漏的代码:public class MainActivity extends Ap...

2020-03-08 21:40:56 1758

原创 App 布局优化的原理以及各种实际方法案例

子曰:温故而知新,可以为师矣。 《论语》-- 孔子作为性能优化专栏的第三篇,我们就来说一说 UI 绘制优化的思路以及一些解决方案。1. CPU 与 GPUCPU:中央处理器。CPU 的任务繁多,做逻辑计算外,还要做内存管理、显示操作,因此 在实际运算的时候性能会大打折扣,在没有 GPU 的时代,不能显示复杂的图形,其运算速度远跟不上今天复杂三维游戏的要求。即使 CPU 的工作频率...

2020-03-07 14:38:29 1635

原创 Android 黑白屏由来以及解决方案

子曰:温故而知新,可以为师矣。 《论语》-- 孔子作为 性能优化 系列章节的第一篇,我们就来说一说 Android 黑白屏 的历史由来以及如何解决。一、APP的三种启动方式1. 冷启动:程序从头开始,系统没有为该程序创建进程。一般场景:程序安装后的第一次启动 或者 应用程序被系统完全终止后再打开。2. 热启动:程序任然驻留在内存中,只是被系统从后台带到了前台,因此程序可以...

2020-03-04 14:09:01 4536

原创 Android 设计模式 之 建造者模式

子曰:温故而知新,可以为师矣。 《论语》-- 孔子本篇文章主要学习 建造者 设计模式。它是 创建型 设计模式的一种。什么是建造者模式???定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式又被称为生成器模式,它是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示分离出来。我们可以举个例子来说明一下:...

2020-02-17 19:38:06 346

原创 Android 四大组件 之 Service

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、 简介Android 四大组件之一,特点是无需界面,用于在后台处理耗时的操作或长期任务。甚至在程序退出的情况下,我们也可以让 Service 在后台继续保持运行状态。二、 生命周期先来一张经典的图:从图上分析:Service 的生命周期会根据启动方式的不同有不同的生命周期回调。startService 和 bindSe...

2020-02-16 12:00:12 1409

原创 Android 四大组件 之 Activity

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、 Activity 生命周期先来放一张最经典的图1.1 典型情况下生命周期分析onCreate: Activity 生命周期的第一步。此方法中,常见操作有 setContView() 加载布局资源;业务需求需要的数据做初始化操作,例如 setText(),setImage() 等等。onRestart():表示某一个后台 ...

2020-02-15 18:29:44 1660

原创 Okhttp 源码阅读解读

子曰:温故而知新,可以为师矣。 《论语》-- 孔子在讲源码之前,我们先来略提一下 OKHttp 的简单实用,本篇文章主要还是对于 OKHttp 主流程的源码进行梳理。一、基本使用1.1 添加 Gradle依赖implementation("com.squareup.okhttp3:okhttp:3.10.1")1.2 Get 请求 // get 请求 public...

2020-02-14 20:39:38 332

原创 Java 之 泛型

子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、概述允许在定义 类、接口 时通过一个 标识 表示 类中某个属性的类型 或者是 某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。二、泛型使用1. ArrayList 集合中使用泛型 // 在集合中使用泛型 ...

2020-02-12 13:36:03 247

原创 Java 之 集合

重拾 Java 之 集合子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、概述对多个数据进行存储操作的结构,简称 Java 容器。

2020-02-10 21:38:32 261

原创 Java 之 注解

重拾 Java 之 注解子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、背景JDK 5.0 开始,Java增加了对元数据的支持,也就是注解。二、概述代码里面的特殊标记,可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署...

2020-02-03 16:07:37 403

原创 Java 之 枚举

重拾 Java 之 枚举子曰:温故而知新,可以为师矣。 《论语》-- 孔子一、场景类的对象只有有限个,确定的。当需要定义一组常量时,强烈建议使用枚举类。二、使用JDK 1.5 之后新增 enum 关键字用于定义枚举类。枚举类对象的属性不应允许被改动,应该使用 private final 修饰,并在构造器中赋值。若枚举类显示定义了带参数的构造器,则在列出枚举值时也必须对应...

2020-02-03 16:00:58 347

空空如也

空空如也

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

TA关注的人

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