自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android进阶之开发问题笔记

0 工作总结 当天问题,当天解决,坚决不过周。(2017/5/7) Git提交前先review代码,确认无误再提交;每次提交的内容是一个功能点,方便查找功能、代码。(2017/7/2) 每一个功能点都必须经过自测,才能提交测试。(2017/7/2) 控制情绪。(2017/8/8) ...

2017-06-26 22:37:40 1347 3

原创 Android进阶之数据加密算法

1 Des加密 1.1 什么是Des加密? DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力24小时内即可被破解。 1.2 加密有哪...

2020-03-22 11:40:40 43 0

原创 Android进阶之混淆配置

1、proguardFiles会让sdk中配置的混淆文件不能在app中生效,sdk中配置consumerProguardFiles即可实现在app中生效。 debug{ consumerProguardFiles 'proguard-rules.pro' } 2、...

2019-12-22 17:44:07 62 0

原创 Android进阶之7.0适配-应用之间共享文件(FileProvider)

1 问题 (1)以下是一段简单的代码,它调用系统的相机app来拍摄照片: void takePhoto() { String cameraPhotoPath = getApplicationContext().getExternalCacheDir().getPath(); Fil...

2019-12-15 13:57:07 151 0

原创 Java进阶之深入理解队列同步器AbstractQueuedSynchronizer(AQS)

1 AQS介绍 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面: AQS是一个用来构建锁和同步器的框架,使用AQS能构造出应用广泛的同步器,比如:ReentrantLock,Semaphore,Count...

2019-10-27 10:55:57 72 0

原创 Android studio项目中的gradle配置

1 gradle.properties详解 gradle.properties是项目级别的Gradle配置文件。在使用Android Studio新建Android项目之后,在项目根目录下会默认生成一个gradle.properties文件,我们可以在里面做一些Gradle文件的全局性的配置,也可...

2019-10-18 19:29:56 138 0

原创 软技能之读《如何在工作中快速成长?致工程师的10个简单技巧》

1 对认知的定义 如何在工作中快速成长?致工程师的10个简单技巧 比如: 说到时间管理立马连接到“找到不被打扰的时间用于投资自己”; 说到执行力立马连接到“先想明白,然后一步步做下去”; 说到改变习惯立马连接到“在触发条件发生进入下一个行为时,做对选择题”。 通过认知的改变,...

2019-10-10 09:51:02 248 0

原创 Java进阶之深入理解原子变量

1 什么是原子变量?为什么需要它们呢? 对于count++这种操作来说,通常使用synchronized关键字保证原子更新操作,synchronized会保证多线程不会同时更新变量count。但是,使用synchronzied成本太高了,需要先获取锁,最后还要释放锁,获取不到锁的情况下还要等待,还...

2019-08-25 23:06:44 71 0

原创 Java进阶之深入理解synchronized

1 synchronized关键字 synchronized翻译为中文的意思是同步的,它是Java中处理线程安全问题常用的关键字,也有人称其为同步锁。 2 synchronized到底锁住的是什么 (1)synchronized锁住的是对象而非代码,实际保护的是同一个对象的方法调用,确保同时只能有...

2019-08-25 17:33:31 100 0

原创 Java进阶之并发编程系列

1 线程基础 1.1 详解Thread与Runnable (1)概念 (2)学习链接 Java基础之详解Thread与Runnable (3)总结 1.2 详解 2 深入理解synchronized 2.1 深入理解synchronized 3 Java中的锁 3.1 可重入锁 4 Java中13...

2019-08-25 12:01:39 56 0

原创 Android深入理解RemoteViews

1 前言 RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,RemoteViews表示的是一种View的结构,他可以在其他的进程中显示,最常用的就是通知栏和桌面小组件。 2 RemoteViews应用 2.1 在通知栏上的应用 2.1.1 什么是通知 通知是...

2019-08-11 22:45:52 310 0

原创 Java基础之异常

1 父类异常与子类异常之间的捕获关系 1.1 问题 public class Annoyance extends Exception { } public class Sneeze extends Annoyance { } public class Human { public ...

2019-07-30 21:15:11 29 1

原创 Gradle从入门到实战-定义Task

1 Task Task可以理解为Gradle的执行单元,实在是太重要了。根据前面的分析,Gradle通过一个个task来完成具体的构建任务,下面我们来看下Task的定义。最简单直接,通过如下方式来定义: task myTask { println "config myTask&q...

2019-07-14 10:54:47 52 0

原创 Gradle从入门到实战-Gradle执行时序

1 2 settings.gradle start settings.gradle start > Configure project : seniorlibs.gradle start seniorlibs.gradle end > Configure project :app ...

2019-07-11 07:52:40 60 0

原创 Gradle从入门到实战-Groovy基础

1 前言 最近在学习Gradle,把过程中都,Gradle从入门到实战,包括: (1)Groovy基础; (2)全面理解Gradle; (3)如何创建Gradle插件; (5)实战,从0到1完成一款Gradle插件 2 3 Groovy基础和结果 /** * 在当面目录下创建build.grad...

2019-07-07 22:56:47 98 0

原创 Android自定义View最佳实践

1 自定义View的分类 1.1 继承View重写onDraw方法 这种方法主要用于实现一些不规则的效果,即这种效果不方便通过布局的组合方式来达到。需要通过绘制的方式来实现,即重写onDraw()方法。一般就是想自己实现某些图形了,因为原生控件已经满足不了你了,很显然这需要绘制的方式来完成,采...

2019-05-05 23:42:03 1457 0

原创 Java进阶之深入理解深拷贝和浅拷贝

1 Java的clone方法 1.1 什么是clone()方法? (1)在实际编程过程中,我们要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值。也就是说,A与B是两个独立的对象,但B的初始值是由A对象...

2019-03-07 21:11:29 164 0

原创 Android基础之IntentFilter的匹配规则

1 启动Activity的方式 (1)启动Activity分为两种,显示调用和隐式调用。显示调用需要明确的指定被启动对象的组件信息,包括包名和类名;而隐式意图则不需要明确指定调用信息。原则上一个intent不应该即是显式又是隐式调用,如果二者共存的话以显式调用为主。 (2)隐式调用需要inte...

2019-02-26 00:21:13 337 0

原创 Android刘海屏适配方案

1 什么是刘海屏 屏幕的正上方居中位置(下图黑色区域)会被挖掉一个孔,屏幕被挖掉的区域无法正常显示内容,这种类型的屏幕就是刘海屏,也有其他叫法:挖孔屏、凹凸屏等等,这里统一按刘海屏命名。   现在市场上的情况来说,“刘海屏”主要分成两类,一类是标准的 Android P Api,另外一类就是厂...

2019-02-14 00:42:06 1619 0

原创 Flutter:编写第一个应用

1 开发环境搭建 Flutter之Windows环境搭建 Flutter基础篇(4)-- Flutter填坑全面总结 解决Flutter Could not find lint-gradle-api.jar 2 未完待续

2019-01-26 21:25:39 127 2

原创 Android进阶之探究ActivityLifecycleCallbacks

1 ActivityLifecycleCallbacks用来监听所有Activity的生命周期回调 Activity 的每一个生命周期都对应 ActivityLifecycleCallbacks 接口中的一个方法,比如 onActivityCreated 回调是在 Activity 的 onCre...

2018-12-15 15:37:31 179 0

原创 Android进阶之将注解@IntDef @StringDef替代枚举类(enum)

1 概述 Enum是java中一种包含固定常数的类型。当我们需要预先定义一些值,并限定范围时,使用 Enum,来做到编写和编译都查错。   Java的Enum的实质是特殊单例的静态成员变量,可以在编写器,编译器做到各种静态检查防呆;在运行期,所有枚举类作为单例,全部加载到内存中。   因此,...

2018-12-02 12:06:31 402 2

原创 Android进阶之通识基础

1 数据类型字节数 1.1 字节 一个字节,8个二进制位 1.2 字节数 (1) 32位编译器 (2) 64位编译器 2 正负数二进制的表示 2.1 正负数二进制的表示 (1)正数的值,第一位以0作为正数标识,直接去二进制转10进制,方便计算0开头对应的值。无符号数...

2018-12-01 00:44:34 67 0

原创 Android进阶之View.inflate和LayoutInflater.inflate方法区别

1 LayoutInflater   LayoutInflater用于加载布局的。加载布局的任务通常都是在Activity中调用setContentView()方法来完成的。其实setContentView()方法的内部也是使用LayoutInflater来加载布局的,只不过这部分源码是内部的。...

2018-09-02 11:39:43 7046 4

原创 Android系统分析之ThreadLocal

1 ThreadLocal操作示例 1.1 例子 public class MainActivity extends AppCompatActivity { private static final String TAG = "T...

2018-07-28 23:20:14 132 2

原创 Android进阶之Android build构建流程

1 Apk构建基本流程   详细研究,把代码编译成一个apk文件并安装到手机上的这个过程中,是怎么把代码和资源文件打包成一个apk文件,并安装到手机上的?   此图描述了:Android Project经过编译和打包后生成apk文件,然后再经过签名,就可以安装到设备上。   将一个实际...

2018-06-19 00:12:46 2376 4

原创 Java进阶之深入理解线程池

1 基本概念   线程池,就是一个线程的池子,里面有若干线程,它们的目的就是执行提交给线程池的任务,执行完一个任务后不会退出,而是继续等待或执行新任务。   线程池主要由两个概念组成,一个是任务队列,另一个是工作者线程,工作者线程主体就是一个循环,循环从队列中接受任务并执行,任务队列保存待执行...

2018-05-27 00:07:51 352 2

原创 Android基础之四大组件综述

  本篇文章概述分析Android四大组件的机制,插入本人其他的博客链接方便阅读,以及为接下来写四大组件的内部工作过程铺垫。 1 Android四大组件的运行状态   Android四大组件包括Activity、Service、BroadcastReceiver和Content...

2018-05-13 22:20:41 281 0

原创 Android系统分析之JVM/DVM、垃圾回收机制与类加载器

1 Java虚拟机 1.1 JVM(Java Virtual Machine,Java虚拟机)   JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机。JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,由JVM负责把程...

2018-03-21 21:38:03 942 0

原创 Java基础之深入理解final关键字

1 含义   final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。final变量是只读的。 2 分类 2.1 什么是final变量...

2018-03-12 09:34:48 458 0

原创 Android源码分析之分享公共库框架

分享公共库使用说明文档(友盟6.4.5) 1 引入公共库 (1)在build.gradle添加仓库地址 (2)在build.gradle中引入’com.guan.codelibs:share:1.0.0’ (3)例子如下: dependencies { compile �...

2018-03-03 21:16:24 261 3

原创 数据结构与算法之经典算法

1 求1000之内的所有水仙花数 /** * 输入描述:求1000之内的所有水仙花数 * * 水仙花数,是指一个三位整数,它的各位数字的立方和等于这个数本身. 例如:371就是一个水仙花数,因为371=3*3*3+7*7*7+1*1*1. ...

2018-03-01 00:32:24 2925 4

原创 Java进阶之Sax、Dom和Pull解析xml

1 概念   Java的xml解析器库有很多,万变不离其宗的就是SAX和DOM解析器。 1.1 DOM解析   DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程...

2018-02-08 21:07:43 251 0

原创 Android系统分析之View绘制流程与源码分析

1 概念   有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系,id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递归的实现。   整个View树的绘图流程是在ViewRootImpl类的perf...

2018-02-07 00:39:36 244 0

转载 Android系统分析之Window的视图对象的创建过程分析(本文转载)

1 参考链接 Android应用程序窗口(Activity)的视图对象(View)的创建过程分析 Android应用setContentView与LayoutInflater加载解析机制源码分析 Android应用程序窗口(Activity)与WindowManagerService服务的...

2018-02-05 22:45:35 764 1

原创 Android基础之四大组件-深入理解ContentProvider

1 介绍   ContentProvider(内容提供者):为存储和获取数据提供统一的接口。使用ContentProvider,应用程序可以实现跨进程通信–App间数据共享。Android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)。 ...

2018-02-02 09:47:12 201 0

原创 Android基础之四大组件-深入理解Service

1 介绍   Service是android的一种机制。Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序的上下文里。需要通过某一个Activity或其他Context对象来调用。 1.1 Service的生命周期  ...

2018-01-31 23:58:04 240 1

原创 Android基础之四大组件-深入理解BroadcastReceiver

1 介绍 1.1 定义   广播是一个全局的监听器,属于Android四大组件之一。Android广播分为两个角色:广播发送者、广播接收者。 1.2 作用   监听/接收应用App发出的广播消息,并做出响应。 1.3 应用场景 And...

2018-01-28 09:52:41 233 2

原创 Android进阶之深入理解网络编程

1 详解TCP 1.1 TCP是什么?   TCP是Tranfer Control Protocol的简称,TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在T...

2018-01-23 23:55:07 1122 1

原创 Android源码分析之RxJava框架

1 基础版RxJava框架  RxJava是一个非常牛逼的框架,用法很简单,但内部实现复杂,代码逻辑绕。既然用拆轮子的方式来分析源码比较难啃,我们换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,留下核心代码带大家揭秘RxJava的实现原理。2 什么是响应式编程  RxJav...

2018-01-04 00:31:19 219 0

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