自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android:LeakCanary原理的简单理解和使用

1、使用进行,从而来监听Activity的何时被destroy。2 、在的回调中,去检测Activity是否被回收,检测方式如以下步骤。3、使用一个弱引用指向这个activity,并且给这个弱引用指定一个引用队列queue,同时创建一个key来标识该activity。4 、然后将检测的方法投递到空闲消息队列。5、当空闲消息执行的时候,去检测queue里面是否存在刚刚的弱引用,如果存在,则说明此activity已经被回收,就移除对应的key,没有内存泄漏发生。6 、如果queue。

2023-05-04 22:18:39 3381 2

原创 Android:ThreadLocal的简单理解和使用

1、本质是操作线程中来实现本地线程变量的存储的2、是采用数组的方式来存储数据,其中key(弱引用)指向当前对象,value为设的值3、为内存泄漏采取了处理措施,在调用的方法的时候都会清除线程里所有key为null的Entry4、在使用的时候,我们仍然需要注意,避免使用static的,分配使用了后,一定要根据当前线程的生命周期来判断是否需要手动的去清理中清key==null的Entry。

2023-03-26 14:54:59 1392

原创 Android:IdleHandler的简单理解和使用

IdleHandler 说白了,就是 Handler 机制提供的一种,可以在 Looper 事件循环的过程中,当出现空闲的时候,允许我们执行任务的一种机制。,当然要注意这里执行的代码同样不能太耗时,因为它是同步执行的,如果太耗时肯定会影响后面的 message 执行。MessageQueue 是一个基于消息触发时间的优先级队列,所以队列出现空闲存在两种场景。,也就是当下次队列空闲的时候,不会继续回调它的 queueIdle 方法了。这个获取消息队列下一个待执行消息的方法中,我们跟一下具体的逻辑。

2023-02-27 09:19:01 3405 2

原创 Android:同步屏障的简单理解和使用

这样发送的消息都是普通消息也就是同步消息,发出去的消息就会在MessageQueue中排队。这里我们假设一个场景:我们向主线程发送了一个UI绘制操作Message,而此时消息队列中的消息非常多,那么这个Message的处理可能会得到延迟,绘制不及时造成界面卡顿。同步屏障机制的作用,是让这个绘制消息得以越过其他的消息,优先被执行。在请求监听Vsync信号时,阻塞Handler消息队列中的同步消息,优先保证接收Vsync信号的异步消息,及时生成新的屏幕数据,供屏幕显示。,会将即将处理的消息移除队列并返回;

2023-02-23 21:21:55 2397

原创 Android:Navigation使用safe args插件传递参数

这里需要在FragmentA跳转到FragmentB时传参数,所以给FragmentB设置参数,点击FragmentB,点击右侧面板的Arguments右侧的+,输入参数的key值,指定参数类型和默认值,即可快速添加参数。afe args与传统传参方式相比,好处在于安全的参数类型,并且通过谷歌官方的支持,能很方便的进行参数传值。注意:在目标Fragment中定义你要传递的参数,不是在一开始的Fragment中定义你的传递参数。safeArgs会根据nav_graph中的fragment标签生成对应的类,

2022-11-22 22:20:35 2583

原创 Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

【代码】Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据。

2022-11-21 22:23:58 4056

原创 Android:如何在 android constraintLayout 中设置视图的最大宽度?

如果您将它添加到您的 SeekBar,其值为 200dp,保持父级的左右约束和 0dp 的宽度,它会将视图的宽度拉伸到 200dp,但如果有更多空间,它将保持在200dp。

2022-11-20 20:03:41 1382

原创 Android:安卓学习笔记之共享元素的简单理解和使用

Andriod5.0及之后,开始支持共享元素动画,两个Activity或者fragment可以共享某些控件,例如ActivityA跳转到ActivityB的时候,A的某个控件能自动移动到B的相应控件的位置,产生动画。当然了,你也可以为任何非共享的View设置Transition过渡动画,只不过调用的API变了在对应的Fragment中调用。记住,返回Transition需要在跳转Fragment中调用相应的方法,要不然你得不到你想要的效果的。...

2022-07-28 19:14:36 2180

原创 Android:安卓学习笔记之navigation的简单理解和使用

Jetpack提供了一个名为Navigation的组件,旨在方便开发者管理Fragment页面和Appbar

2022-07-21 22:40:19 10600 2

原创 Android:安卓学习笔记之MVP模式的简单理解和使用

Android MVP模式的简单理解和使用MVP模式参考MVP模式参考1、一步步带你精通MVP2、移动架构这么多,如何一次搞定所有

2022-03-11 21:56:19 7025 2

原创 Android:安卓学习笔记之OkHttp原理的简单理解和使用

Android OkHttp使用原理的简单理解和使用OkHttp0、前言1、请求与响应流程1.1 请求的封装1.2 请求的发送1.3 请求的调度1.4 请求的处理2、拦截器2.1 RetryAndFollowUpInterceptor2.2 BridgeInterceptor2.3 CacheInterceptor2.3.1、HTTP缓存原理2.3.2、强制缓存2.3.3、协商缓存(对比缓存)2.3.4、OKHttp的缓存实现2.3.4.1、缓存策略2.3.4.2、Okhttp的缓存策略2.3.4.3、缓存

2022-01-26 17:35:40 4194 1

原创 Java:Java学习笔记之ReentrantLock的简单理解和使用

ReentrantLock ReentrantLock1、相关知识1.1 公平锁和非公平锁1.2 可重入锁1.3、CAS算法2、背景、定义和特征2.1、背景2.2、定义2.3、特征3、基本结构4、基本使用4.1、解决背景问题4.2、重入锁 使用4.3、公平锁使用5、源码分析5.1、AQS5.2、非公平锁的实现原理5.2.1、lock方法获取锁:tryAcquire5.2.2、锁的释放:tryRelease5.3、公平锁的实现原理5.3.1、lock方法获取锁:tryAcquire5.3.2、锁的释放:try

2022-01-21 20:16:36 3451

原创 Java:数据结构笔记之LRU缓存机制的简单理解和使用

Java LRU缓存机制的简单理解和使用LRU缓存机制1、题目2、思路3、题解LRU缓存机制1、题目原题链接运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) -如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容

2022-01-20 09:00:45 507

原创 Java:java学习笔记之Synchronized的简单理解和使用

Java Synchronized的简单理解和使用Synchronized参考Synchronized参考1、Java锁机制了解一下2、Java线程安全与锁机制

2022-01-19 09:28:50 516

原创 Java:java学习笔记之锁机制的简单理解和使用

锁机制的简单理解和使用锁机制参考锁机制参考1、Java线程安全与锁机制2、不可不说的Java“锁”事

2022-01-17 23:16:04 1004

转载 Java:java学习笔记之Java单例模式的简单理解和使用

Java单例模式的简单理解和使用Java单例模式1、饿汉式单例的实现如下:2、懒汉式终极版本:volatile3、Effective Java 1 —— 静态内部类4、5.2 Effective Java 2 —— 枚举参考Java单例模式1、饿汉式单例的实现如下://饿汉式实现public class SingleB { private static final SingleB INSTANCE = new SingleB(); private SingleB() {} p

2022-01-16 15:58:42 231

原创 Android:安卓学习笔记之Bitmap的简单理解和使用

Android Bitmap的简单理解和使用Android Bitmap一.Bitmap的定义二.Bitmap的格式2.1 存储格式2.2 压缩格式三.Bitmap创建方法3.1 BitmapFactory3.1.1、 Bitmap.Options类3.2 Bitmap静态方法3.3 创建Bitmap的总结四.常见函数4.1 函数及其参数4.2 常用操作五.常见问题5.1 Bitmap与Canvas,View,Drawable的关系5.2 使用Bitmap如何造成内存溢出的?5.3怎么解决或者避免Bitm

2022-01-14 18:33:49 12402 2

原创 Android :安卓学习笔记之 Android View绘制 的简单理解和使用

Android View的简单理解和使用Android View参考Android View参考1、Android View详解2、教你搞定Android自定义View3、每日一问(十九)请描述一下View的绘制流程

2022-01-13 08:44:31 1511 1

原创 Android :安卓学习笔记之 Android View 的基础知识和冲突事件处理

Android View的简单理解和使用Android View1、View的基础知识1.1 什么是View1.2 View的位置参数1.3 MotionEvent和TouchSlop1.3.1. MotionEvent1.3.2.TouchSlop1.4 VelocityTracker、GestureDetector和Scroller1.4.1 VelocityTracker:速度追踪1.4.2 GestureDetector:手势检测1.4.3 Scroller:弹性滑动对象2、View的滑动2.1 使

2022-01-12 08:14:24 573

原创 Android:安卓学习笔记之进程间通信方式(IPC)的简单理解和使用

进程间通信方式 的简单理解和使用进程间通信方式1、背景1.1、进程空间划分1.2、进程隔离 & 跨进程通信( IPC)1.3、基础概念:序列化方式1.3.1、Serializable接口1.3.2、SParcelable接口2、通讯方式种类3、使用Bundle4、使用文件共享5、使用Messenger5.1、Messenger是什么?5.1.1、Messenger源码简单说明5.2、使用步骤5.2.1、服务端:5.2.2、客户端5.3、使用案例5.4、特征分析6、使用AIDL6.1、AIDL是什么?

2022-01-11 07:49:15 1046

原创 Android:安卓学习笔记之Binder 机制的简单理解和使用

Binder 机制 的简单理解和使用Binder 机制参考Binder 机制参考1、图解Android中的Binder机制2、Android Binder(也许是最容易理解的)3、图文详解Binder跨进程通信原理4、Android 接口定义语言 (AIDL)...

2022-01-10 07:47:59 2910 1

原创 Android:安卓学习笔记之GreenDao 的简单理解和使用

GreenDao 的简单理解和使用GreenDao1、前言2、greenDAO 概述3、ORM 框架概述4、greenDAO 使用4.1、准备工作4.1.1、引入 greenDAO4.1.2、创建实体类4.1.3、自动生成实体类代码4.1.4、初始化 greenDAO4.2、具体使用(增删改查)4.2.1、新增数据4.2.2、查询数据4.2.3、更新数据4.2.4、删除数据4.2.5、GreenDaoManager 完整代码5、总结2、参考GreenDao1、前言关于 Android 中常用的数据存

2022-01-09 09:19:12 13903 1

原创 Android:安卓学习笔记之Service 的简单理解和使用

Service 的简单理解和使用Service1、简介1.1、背景1.2、什么是Service?2、生命周期2.1、常用函数2.2、生命周期方法具体介绍3、分类4、使用4.1、本地Service4.2、可通信的服务Service4.3、前台Service4.4、IntentService4.4.1、Service和IntentService对比4.4.2、使用4.4.3、源码分析5、总结6、面试问题参考Service1、简介1.1、背景你一般在什么情况下会使用Service?经验总结:Ser

2022-01-08 08:55:30 3761 1

原创 Android:安卓学习笔记之广播机制的简单理解和使用

广播机制的简单理解和使用广播机制广播简介广播分为两大类1.标准广播(Normal broadcasts)2.有序广播(Ordered broadcasts)注册方式静态注册广播动态注册广播两种注册各有什么优缺点发送无序广播发送有序广播常见问题1、怎样设置有序广播的接收顺序呢?2、前面的广播接收器怎样截断正在传递的广播呢?3、BrocastReceiver 里可不可以执行耗时操作4、BroadcastReceiver,LocalBroadcastManager 区别5、如何通过广播拦截和 abort 一条短信

2022-01-08 08:41:39 2213

转载 Android :安卓学习笔记之事件内存泄露 的简单理解

Android 内存泄露的简单理解内存泄露1、简介2、内存泄露的本质原因3、Android 内存管理机制3.1、针对进程的内存策略3.1.1、内存分配策略3.1.2、内存回收策略3.2、针对对象、变量的内存策略3.2.1、内存分配策略3.2.2、内存释放策略3.2.1、内存分配策略4、常见的内存泄露原因 & 解决方案4.1、集合类4.2、Static 关键字修饰的成员变量4.2.1、静态成员变量有个非常典型的例子 = 单例模式4.3、非静态内部类 / 匿名类4.3.1、非静态内部类的实例 = 静态4

2022-01-07 00:52:49 235

原创 Java:java学习笔记之volatile关键字的简单理解和使用

volatile关键字的简单理解和使用volatile关键字1、定义2、并发编程的3个基本概念2.1、原子性2.2、可见性2.2.1、Java的内存模型JMM以及共享变量的可见性2.2.1.1、举例说明2.2.2、可见性2.3、有序性3、锁的互斥和可见性4、volatile变量的特性4.1、保证可见性4.2、保证有序性4.2.1、指令重排4.2.1.1、happens-before原则4.2.1.2、解决方法:volatile关键字4.3、不保证原子性5、volatile原理6、volatile的使用6.1

2022-01-06 09:02:29 11577

转载 Android :安卓学习笔记之 事件分发机制 的简单理解和使用

Android 事件分发机制的简单理解和使用事件分发机制参考事件分发机制参考1、Android事件分发机制详解:史上最全面、最易懂2、图解 Android 事件分发机制

2022-01-05 07:44:20 299

原创 Java:Effective java学习笔记之 用enum代替int常量

Java 用enum代替int常量用enum代替int常量1、用enum构建2、enum枚举常量与数据关联3、枚举常量与行为关联4、枚举策略模式5、总结参考用enum代替int常量在枚举类型出现之前,一般都常常使用int常量或者String常量表示列举相关事物。如:public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_S

2022-01-03 16:45:21 439

原创 Java: Java学习笔记之 String的常见用法

String的常见用法String的常见用法1、创建String1、字符串比较1、字符串查找1、字符串替换1、字符串拆分1、字符串截取1、转换功能的方法1、其他操作方法1、StringBuffer 和 StringBuilder参考String的常见用法1、创建StringString str1="hello";String str2=new String("world");1、字符串比较通过使用过String类提供的equals()方法,该方法本身是可以进行区分大小写的相等判断。除了这个方法

2021-12-29 14:44:56 711

原创 Java:java学习笔记之枚举的简单理解和使用

Java枚举的简单理解和使用枚举的简单理解和使用1、背景2、定义3、使用常用内置方法:总结枚举的简单理解和使用1、背景在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。例如:public class Entity { public static final int VIDEO = 1;//视频 public static final int AUDIO = 2;//音频 public static final int TEXT = 3;//文字 public static

2021-12-27 08:23:18 243

原创 Java:Effective java学习笔记之 优先考虑泛型和泛型方法

Java优先考虑泛型和泛型方法优先考虑泛型参考优先考虑泛型参考1、建议:优先考虑泛型方法。2、Effective Java 优先考虑泛型3、Effective Java笔记第四章泛型第四节优先考虑泛型

2021-12-25 20:49:14 259

原创 Java:Effective java学习笔记之 列表优先于数组

Java列表优先于数组1、列表优先于数组参考1、列表优先于数组参考1、第二十五条:列表优先于数组2、第25条:列表优先于数组

2021-12-23 08:29:39 274

原创 Java:Effective java学习笔记之 请不要在新代码中使用原生态类型

Java请不要在新代码中使用原生态类型1、请不要在新代码中使用原生态类型参考1、请不要在新代码中使用原生态类型1、在没有泛型之前,从集合中读取到每一个对象都必须进行转换。如果有人不小心插入了类型错误的对象,在运行时的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合中接受哪些对象类型。编译器自动地为你的插入进行转换,并在编译时告知是否插入了类型错误的对象。这样就可以使程序更加安全和清楚。在java1.5版发行之前,没有泛型时,集合声明:// Now a raw collection type

2021-12-21 08:19:00 311

原创 Android:安卓学习笔记之MVC、MVP模式的简单理解和使用

Intent的理解和使用Intent的理解和使用1、什么是Intent参考Intent的理解和使用1、什么是Intent参考1、https://www.jianshu.com/p/9a6845b268562、https://blog.csdn.net/vector_yi/article/details/24719873?utm_source=tuicool3、https://www.cnblogs.com/JustRun1983/p/3679827.html4、https://www.cnbl

2021-12-20 18:19:20 2008

原创 Android :安卓学习笔记之 System.currentTimeMillis()计算方式与时间单位的转换

@TOCSystem.currentTimeMillis()在开发过程中,通常很多人都习惯使用new Date()来获取当前时间。new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要或者毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。如果需要在同一个方法里面多次使用new Date(),通常性能就是这样一点一点地消耗掉,这里其实可以声明一个引用。 package dem

2021-12-19 23:44:30 2026

原创 Android :安卓学习笔记之 Handler机制 的简单理解和使用

Android Handler机制的简单理解和使用1、Handler使用引出2、背景和定义3、作用4、相关概念5、工作流程5.1、对应关系6、基本使用7、参考1、Handler使用引出现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎闪屏页面),如下图:可能觉得直接开启一个包含倒序循环的子线程就ok了,具体实现如下:activity_main<?xml version="

2021-12-18 18:00:16 4413 1

原创 Java:Effective java学习笔记之 接口只用于定义类型、类层次优于标签类

Java接口只用于定义类型1、 接口只用于定义类型1.1、常量接口2、 类层次优于标签类1、 接口只用于定义类型当类实现接口时,接口就充当可以引用这个类的实例的类型。因此,类实现了接口,就表明可以对这个类的实例实施某些动作。那么,不是为了这个目的而定义接口就是不恰当的1.1、常量接口有一种接口被称为常量接口,它不满足上述条件,这种接口没有包含任何方法,它只包含静态的final域,每个域都导出一个常量。public interface PhysicalConstants { static f

2021-12-17 08:20:27 501

原创 Java:Effective java学习笔记之 接口优于抽象类

Java接口优于抽象类接口优于抽象类1、接口和抽象类2、接口优点3、骨架类3.1、demo参考接口优于抽象类1、接口和抽象类Java中抽象类和接口的区别2、接口优点1、现有的类可以很容易的被更新,以实现新的接口。如果你前期编写了一个类A,后期有在系统中加入了一个新的接口B,当你想让前期编写的类来实现这个接口,你只用加上一句implementB,然后在类A中实现里面的方法即可,不会影响到以前的类对类A的使用。2、接口是定义mixin(混合类型)的理想选择。这一条主要说的是,一个类可以实

2021-12-16 08:16:52 453

原创 Java:Effective java学习笔记之 复合优先于继承

Java复合优先于继承复合优先于继承1、实现继承和接口继承2、在实际开发中继承的缺点2.1、子类依赖于其超类中特定功能的实现细节3、什么是复合?3.1、书上案例4、复合相比较于继承的优点和缺点5、何时使用继承,何时使用复合?参考复合优先于继承面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。同样地,在《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。1、实现继承和接口继承实现继承:当一个类扩展另一个类的时候接口继承:当一

2021-12-15 07:46:05 925

原创 Java:Effective java学习笔记之 使类和成员的可访问性最小化

Java 使类和成员的可访问性最小化使类和成员的可访问性最小化1.信息隐藏2.为什么要使类和成员的可访问性最小化?3.如何最小化类和接口的可访问性?4.对于成员(域、方法、嵌套类和嵌套接口)访问级别5. 如何最小化一个类中成员的可访问性?参考使类和成员的可访问性最小化1.信息隐藏区分一个组件设计得好不好,唯一重要的因素在于,它对于外部的其他组件而言,是否隐藏了其内部数据和其他实现细节。设计良好的组件会隐藏所有的实现细节,把API与实现清晰地隔离开来。然后模块之间只通过它们的 API 进行通信,一个模块

2021-12-14 08:24:15 218

空空如也

空空如也

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

TA关注的人

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