自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zuo_er_lyf的博客

纯属笔记

  • 博客(214)
  • 收藏
  • 关注

转载 Android组件化,全面掌握

一、背景随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多。此过程中,你是否有过以下烦恼?项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍?改了一行代码 或只调了一点UI,就要run整个项目,再忍受一次10分钟?合代码经常发生冲突?很烦?被人偷偷改了自己模块的代码?很不爽?做一个需求,发现还要去改动很多别人模块的代码?别的模块已实现的类似功能,自己要用只能去复制一份代码再改改?“这个不是我负责的,我不管”,代码责任范围不明确?只做了一个模块的功能,但改动

2020-11-19 15:16:26 334 1

转载 360 RePlugin插件化-项目接入

RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案GitHub 官方文档RePlugin 接入项目分为 主程序接入 和 插件接入。Replugin-dev图片中标识的 replugin-host-* 是主程序接入需要用到的,replugin-plugin-* 是插件接入需要用的。主程序接入注意:Android Support库和Android

2020-08-12 10:48:57 1316

转载 Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

      最近在做蓝牙开发,刚接触时傻傻的分不清经典蓝牙和低功耗蓝牙的区别,一直用开发低功耗蓝牙的方法去连接经典蓝牙设备,最后当然是一直连接不上了。在此记录下经典蓝牙和低功耗蓝牙的区别和联系。Android中的蓝牙     ...

2020-05-08 16:19:14 2742

转载 Android - Activity 与 Window 与 View 之间的关系

相关系列一篇文章看明白 Android 系统启动时都干了什么一篇文章了解相见恨晚的 Android Binder 进程间通讯机制一篇文章看明白 Android 从点击应用图标到界面显示的过程一篇文章看明白 Activity 与 Window 与 View 之间的关系一篇文章看明白 Android 图形系统 Surface 与 SurfaceFlinger 之间的关系一篇文章看明白 A...

2020-05-08 14:27:20 665

原创 顶部导航TabBar、TabBarView、DefaultTabController

今天来学习一下顶部导航组件TabBar,TabBar选项卡一般位于AppBar下方,通常和TabBar(顶部导航选项卡)一起使用的有TabBarView和TabController。TabBar:Tab页的选项组件,默认为水平排列。TabBarView:Tab页的内容容器,Tab页内容一般处理为随选项卡的改变而改变。TabController:TabBar和TabBarView的控制器,它是...

2020-05-04 17:56:21 2305

原创 Android与WebView 交互 获取H5网页标签内容

在与H5交互中,通常会有类似的需求,获取H5页面中的某个标签的值:<title>标题</title><meta name="shareurl" content="https://test2.bytsz.com.cn/thematic/2020/041587621694289.html"><meta name="shareicon" content="...

2020-04-23 16:59:16 2527

转载 Java中的List、Set和Map的各自特征及使用场景

...

2020-01-14 14:53:24 218

转载 图解LinkedHashMap原理

1 前言LinkedHashMap继承于HashMap,如果对HashMap原理还不清楚的同学,请先看上一篇:图解HashMap原理2 LinkedHashMap使用与实现先来一张LinkedHashMap的结构图,不要虚,看完文章再来看这个图,就秒懂了,先混个面熟:LinkedHashMap结构.png2.1 应用场景HashMap是无序的,当我们希望有顺序地去存储k...

2019-12-20 17:55:26 358

转载 HashMap源码解析

前言今天来介绍下HashMap,之前的List,讲了ArrayList、LinkedList,就前两者而言,反映的是两种思想:ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便那么是否有一种数据结构能够结合上面两种的优点呢?有,答案就是HashMap。它是基于哈希表的 Map 接口的实现,以key-v...

2019-12-20 16:56:05 104

转载 hashcode是什么?

一、hashcode是什么?1、hash和hash表是什么?   想要知道这个hashcode,首先得知道hash,通过百度百科看一下:hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值。这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的has...

2019-12-20 16:15:15 459

原创 HashMap和Hashtable的区别

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。1. HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。...

2019-12-20 15:19:51 182

原创 HashSet与TreeSet 区别

HashSetHashSet有以下特点不能保证元素的排列顺序使用Hash算法来存储集合中的元素,有良好的存取和查找性能非同步,多线程并发要注意线程同问题集合元素值可为null通过equal()判断两个元素是否相等,并两个元素的hashCode()返回值也相等当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然...

2019-12-20 14:49:36 438

转载 Arraylist与Vector的区别

这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉,前几天有人反馈LinkedList的文章不太看得懂,临时准备补两篇文章。前几篇文章我们重点说了ArrayLIst,是时候放出这张图了。这张图里的内容对我们学习Java来说,非常的重要,白色的部分是需要去了解的,黄色部分是我们要去重点了解的,不但要知道怎么去用,至少还需要读一次源码。绿色部分内容已经很少用了,但在面试题中有可能会问到,我们...

2019-12-20 11:57:26 99

转载 Arraylist和linkedlist的区别

PS:推荐大家先去了解一下链表这个数据结构。ArrayList和LinkedList可以说是日常业务开发中最常使用的容器类了,同时,他们的区别也是面试高发区,虽然很简单,但是我们总是不能说的完整,今天就通过对他们源码的阅读来进一步加深理解。首先,看他们类的定义可以发现: 他们都是实现了List接口,这个接口干了什么呢?这个接口定义了对列表的一些基本操作,如add,contains,indexof,...

2019-12-20 11:45:52 121

转载 HashSet源码解析

前言今天来介绍下HashSet。前面,我们已经系统的对List和Map进行了学习。接下来,我们开始可以学习Set。相信经过Map的了解之后,学习Set会容易很多。毕竟,Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的)。构造图如下:蓝色线条:继承绿色线条:接口实现正文对于HashSet而言,它是基于HashMap来实现的,底层采用HashM...

2019-12-19 17:38:25 115

转载 LinkedList源码解析

前言今天来介绍下LinkedList,在集合框架整体框架一章中,我们介绍了List接口,LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。构造图如下:蓝色线...

2019-12-19 16:17:13 98

转载 ArrayList源码解析

前言今天来介绍下ArrayList,在集合框架整体框架一章中,我们介绍了List接口,ArrayList继承了AbstractList,实现了List。ArrayList在工作中经常用到,所以要弄懂这个类是极其重要的。构造图如下:蓝色线条:继承绿色线条:接口实现正文ArrayList简介ArrayList定义 public class ArrayList<E&...

2019-12-19 11:14:58 106

原创 Object类有哪些公用方法?

Object是所有类的父类,任何类都默认继承Object。clone保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常equals在Object中与==是一样的,子类一般需要重写该方法hashCode该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈...

2019-12-13 11:38:59 229

原创 为什么局部内部类的成员被final修饰才能被局部内部类的方法访问?

局部变量会在方法调用完毕后立刻消失,而内部类对象的生命周期和其他对象的生命周期一样:当没有引用指向内存地址时,通过垃圾回收机制回收,所以如果局部局部内部类的成员不用final修饰的话,很可能出现方法已经已经调用完毕,内部类还没有被垃圾回收机制收回,定义为final后,编译器会把匿名内部类对象要访问的所有final类型局部变量,都拷贝一份作为该对象的成员变量。这样,即使栈中局部变量已经死亡,匿名内部...

2019-12-13 11:12:25 422

原创 简述java抽象类与接口的异同点

一、抽象类: (关键字abstract)java抽象类定义在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也...

2019-12-13 10:45:01 1494

原创 JAVA重写和重载的区别

1.Java 重载与重写是什么?有什么区别? 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。 重写(Override)是父类与子类之间的...

2019-12-13 10:24:23 114

转载 final,finally,finalize的区别

一.简单区别:final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。二.中等区别:1. final:java中的关键字,修饰符。A).如果一个类被声明为final,...

2019-12-11 11:58:11 118

原创 什么是内部类?有什么作用?静态内部类和非静态内部类的区别?

一、 定义放在一个类的内部的类我们就叫内部类。二、 作用1.内部类可以很好的实现隐藏一般的非内部类,是不允许有 private 与protected权限的,但内部类可以;平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息2.内部类拥有外围类的所有元素的访问...

2019-12-11 11:00:32 1368

转载 Java基础之泛型&反射

a.泛型含义:是JDK1.5的新特性,本质是参数化类型,即所操作的数据类型被指定为一个参数,使用时通过传参来指定具体的类型。好处:安全简单。具体体现在提供编译时的强类型检查,而不用等到运行;可避免类类型强制转换;增强代码可读性。//不使用泛型需要强制转换List list = new ArrayList();list.add("hello");String s = (String) l...

2019-12-10 11:54:19 97

原创 try-catch和throw,throws的区别

java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块。接下来我们挨个看看这几个的作用。1.throwthrow 就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理class A{public void func() throws Exc...

2019-12-09 11:49:24 892

转载 java程序错误类型及异常处理

一、程序的错误类型在程序设计中,无论规模是大是小,错误总是难免的。程序的设计很少有能够一次完成,没有错误的(不是指HelloWorld这样的程序,而是要实现一定的功能,具备一定实用价值的程序),在编程的过程中由于种种原因,总会出现这样或那样的错误,这些程序的错误就是我们常说的“Bug”,而检测并修正这些错误的方法就是“Debug”(调试)。    基本上所...

2019-12-09 11:39:20 1527

转载 深入剖析Java中的装箱和拆箱

一.什么是装箱?什么是拆箱?二.装箱和拆箱是如何实现的三.面试中相关的问题一.什么是装箱?什么是拆箱?我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:Integer i = new Integer(10...

2019-12-03 18:23:36 111

原创 Java堆、栈、内存分析

在 JAVA 中,有六个不同的地方可以存储数据:1. 寄存器( register )。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。2. 栈( stack )。位于通用 RAM 中,但通过它的“栈指针”可以从处理器获得支持。堆栈指针若向下移动,则分配新的内...

2019-12-02 18:28:28 115 1

原创 面向对象 四大特性

面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的...

2019-12-02 17:37:00 194

转载 Bitmap优化

本篇将总结有关图片加载、缓存策略以及优化列表卡顿的知识点:Bitmap的高效加载缓存策略LruCache(内存缓存)DiskLruCache(磁盘缓存)ImageLoader1.Bitmap的高效加载a.Bitmap(位图):指一张图片,常见格式:.png、.jpg等b.必要性:直接加载大容量的高清Bitmap很容易出现显示不完整、内存溢出OOM的问题(如报错:jav...

2019-12-02 16:18:46 175

转载 常见的内存泄漏原因及解决方法

(Memory Leak,内存泄漏)为什么会产生内存泄漏?当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏。内存泄漏对程序的影响?内存泄漏是造成应用程序OOM的主要原因之一。我们知道Android系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多时,这就...

2019-12-02 15:34:47 543

转载 内存溢出和内存泄漏的区别

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致o...

2019-12-02 11:53:16 252

转载 布局原则

在我们之前的学习过程中,总是需要和.xml布局文件接触,那布局到底是什么呢?布局是指页面内容该如何排布,比如控件和父容器的位置关系以及控件与控件之间的位置关系是怎样的。其实除了最常见的LinearLayout 线性布局、RelativeLayout 绝对布局,AS还给我们提供了其他几种,在Android 4.0之后,AS现在有七种布局,本篇将依次介绍,最后简单介绍安卓布局几点原则。目录见下:L...

2019-12-02 10:04:15 475

转载 Lint常见的问题及解决方案

通用的解决方案:在java代码中同样可以忽略(ignore) Lint 警告:@SuppressLint(“忽略的警告名称”),如:Handler泄漏(@SuppressLint(“HandlerLeak”))要是你不清楚要忽略的警告具体是什么名字,那就直接忽略 all,当然是当前类/方法/对象:@SuppressLint("all")在XML中:tools:ignore="忽略"1、...

2019-11-29 16:22:42 2289

转载 Android自定义View注意事项

Android自定义View系列Android自定义View之Paint绘制文字和线Android自定义View之图像的色彩处理Android自定义View之CanvasAndroid自定义View之轻松实现圆角和圆形图片Android自定义View之双缓冲机制和SurfaceViewAndroid自定义View之Window、ViewRootImpl和View的三大流程And...

2019-11-29 16:06:41 470

转载 【Android View事件(四)】View滑动与实现滑动的几种方法

【大圣代的技术专栏 http://blog.csdn.net/qq_23191031 转载烦请注明出处,尊重他人劳动成功就是对您自己的尊重】相关文章详解Android控件体系与常用坐标系Android常用触控类分析:MotionEvent 、 ViewConfiguration、VelocityTrackerAndroid View事件(二)详解事件分发机制一, 前言在前...

2019-11-28 17:15:36 113

转载 Android手势检测——GestureDetector全面分析

前言在很多视频播放器中,都存在使用不同的手势来控制进度、亮度\音量和暂停播放等功能。Android提供了一个GestureDetector来帮助我们识别一些基本的触摸手势(还有ScaleGestureDetector可以识别缩放手势),让我们很方便地实现手势控制功能。下面我们就来学习一下GestureDetector的使用和通过源码(Android7.0)来分析一下它的实现,让我们对触摸事件处理...

2019-11-28 16:01:11 298

转载 【Android View事件(一)】Android常用触控类分析:MotionEvent 、 ViewConfiguration、VelocityTracker

前言在《【Android 控件架构】详解Android控件架构与常用坐标系》这篇文章中,我曾在【常用坐标系】一节中简单描述过 MotionEvent 常用方法,鉴于最近工作中大量处理了View触摸事件,特此展开讨论。1,MotionEvent对于 MotionEvent 官网是如此定义的:Motion events describe movements in terms ...

2019-11-28 15:10:41 265

转载 Android应用坐标系统全面详解

1 背景去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自定义控件,但是大多数都是授之以鱼,却很少有较为系统性授之于渔的文章,同时由于自己也迟迟没有时间规划这一系列文章,最近想将这一系列文章重新提起来,所以就来先总结一下自定义控件的一个核心知识点——坐标系。很多人可能不屑一顾Android的坐标系,但是如果你想彻底学会自定义控件,我想说了解Android各种坐标系及...

2019-11-28 14:06:46 157

转载 史上最全Android build.gradle配置详解

Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的。当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图:build.gradle位置.png一、Project的build.gradle文件:对应的build....

2019-11-26 11:08:35 1411

空空如也

空空如也

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

TA关注的人

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