自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之享元模式

享元模式属于结构型设计模式,旨在通过共享对象来最大限度地减少内存使用。该模式适用于需要创建大量相似对象的情况,通过共享内部状态来减少对象的数量。内部状态指的是对象共享的不变部分,而外部状态则是每个对象特有的变化部分。通过合理地划分内部状态和外部状态,可以在不同上下文中共享相同的对象,从而节省内存和系统资源。享元模式是一种优化内存使用和提高性能的设计模式,通过共享对象来减少内存开销。在适当的场景下,合理应用享元模式可以带来显著的性能提升。但需要注意合理划分内部状态和外部状态,避免引入过多的复杂性。

2023-06-28 21:33:12 172

原创 Android内存笔记之内存泄漏

Android内存笔记之内存泄漏

2023-02-26 16:22:05 266 1

原创 Android内存笔记之基础知识篇

内存是性能的一个重要指标,能直接影响用户的体验,特别是OOM会直接导致进程crash。而内存是一个庞大的知识体系,一两句话没办法讲清楚。所以会以一个系列文章来巩固内存知识。

2023-02-26 16:16:31 1229

原创 Unity2D基础之人物动画、移动、跳跃

Unity2D基础之人物动画、移动、跳跃

2023-02-11 20:01:26 7827 2

原创 kotlin的by lazy会不会导致内存泄漏

本文从实践、源码探究了by lazy加载会不会导致内存泄漏。

2022-12-04 23:14:54 1360

原创 (Android)一种替换大量selector和shape文件的方法

本篇文章提供了一种用`GradientDrawable`和`StateListDrawable`替换大量selector和shape的xml文件的方法,并在实践中踩到了`Drawable.ConstantState`的坑,通过分析源码对加载Drawable资源有了新的理解,并且解决了遇到的问题。

2022-11-04 17:32:10 691

原创 Android KeyStore的使用

Android KeyStore的使用

2022-10-18 17:27:31 6027

原创 ViewBinding和DataBinding的理解和区别

之前一直把ViewBinding当成了DataBinding,直到最近的学习中才发现他们不是一个东西。于是写下这篇笔记帮助理解和区分他们俩。

2022-07-01 11:36:44 8102 6

原创 设计模式之代理模式

目录一、定义二、结构三、代码实现四、AOP的基础五、动态代理5.1 Invocationhandler 和 Proxy5.2 代码实现六、特点优点缺点七、适用场景网络已经是现在人离不开的东西了,我们每天都要上网浏览信息。上网的方式也很简单。但是,当我们要访问一些国外的网站时,就发现访问不了了。这时候就出现了一些VPN,他可以帮助我们去访问一些国内不能访问的网站,也就是说他代理了这个访问过程,把结果返回给了我们。这就是代理模式。.

2022-04-15 11:58:54 3683 2

原创 设计模式之桥接模式

蜡笔和油画笔都是常见的画笔。假设画笔都有大中小三个尺寸,都有12个颜色。如果要准备蜡笔,那么就需要3*12 = 36个类。而如果要准备油画笔,那就只需要三只尺寸的笔和一个调色盘,只需要3+12 = 15个类。如果要增加一个尺寸,蜡笔就需要为每个颜色增加对应尺寸的笔,就是12支。而油画笔就只用增加一支笔。用图表示蜡笔:这是一种多层继承的结构,会导致扩展时要新增的类非常多。并且并不符合单一职责原则而油画笔将两个属性抽离,形成两个独立的维度:很明显,如果要用代码实现,油..

2022-04-14 10:51:00 355

原创 设计模式之适配器模式

目录一、定义二、结构三、代码实现1、耳机适配器例子2、耳机充电器适配器例子四、特点1、类适配器和对象适配器的对比五、适用环境在很久很久以前,耳机几乎都是3.5mm的接口,大部分电子设备耳机的插孔也都是3.5mm。大家一直都遵循这个规则。突然有一天,苹果跳出来说,我的手机不要3.5mm的耳机接口了,充电接口就是耳机接口。我们的耳机也会做成相应的插孔。这下大家就傻了。我耳机都是3.5mm的接口,你苹果产品不能用这些耳机了,这不是玩呢吗?苹果这一举措导致了Iphon

2022-04-13 10:50:49 3423

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

昨天回顾学习了工厂模式。工厂模式是给用户提供一个创建对象的简单方法,使用户不用关心其创建过程的具体细节。今天的建造者模式也同样是这个理念,不同的是,工厂模式一般创建的是内部结构比较简单,初始化比较复杂的类,比如打造零件;而建造者模式是用来创建比较复杂的类,内部有很多成员的类,比如一辆汽车,他包括了很多种零件。一、定义建造者模式:将一个复杂对象的构建于它的表示分离,使得同样的构建过程可以创建不同的表示。定义依然晦涩难懂。还是用生活中的例子举例。你高兴地来到4s店准备买下一辆法拉利,选好

2022-04-12 11:08:09 124

原创 设计模式之工厂模式

最近刚做完毕业设计,但回头看看代码,觉得设计不够合理,存在耦合度较高的情况(说白了就是一座屎山)。在写代码的时候很少去考虑该用什么设计模式。所以接下来一段时间会复习一下设计模式的内容。一、简单工厂模式1、定义简单工厂模式并不属于GoF的23种经典的设计模式,但常常作为其他设计模式的基础。定义如下:简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。用现实例子距离。一个水果农场,顾客告

2022-04-11 18:23:15 761

原创 Android异步消息机制从入门到精通

目录一、什么是Android异步消息机制?二、异步消息机制入门三、源码解析1.Message1.1消息内容1.2.处理消息1.3.缓存机制1.4.小结2.Handler和Looper2.1.Handler里的Looper2.2.Handler发送消息2.3.Looper取出消息2.4.Handler处理消息2.5.小结四、解决疑问为什么Hander在子进程里发消息,最后会由handler所在的进程处理消息?五、总结一、什么是An

2022-03-12 14:34:48 3669

原创 RecyclerView数据更新通知——观察者模式

目录观察者模式RecyclerView数据更新通知模式观察者实现类总结最近在写毕业设计,遇到了要更新RecyclerView展示的数据。于是看了一下源码顺带加深对观察者模式的理解。观察者模式观察者模式定义如下:观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并自动更新Observer Pattern: Define a one-to-many dependency between objects so tha

2022-03-04 16:43:58 3894

原创 Android更换默认主题

相信刚接触Android开发的同学都很熟悉这个界面。这是Android Studio创建新项目后,默认的Empty Activity的布局。不知道有多少同学和我一样觉得App标题和头顶状态栏的紫色很丑。今天的笔记就是记录一下怎么修改主题颜色。一、找到主题文件我们打开项目的AndroidManifest.xml,可以看到有一行是用来指定主题的。从这一句可以看出,我们的主题是通过@style资源来指定的。资源路径就在res/values下,名为themes.xml..

2022-02-25 14:20:16 6484

原创 日期倒计时App——SpecialDay

声明:本App仅用于学习,禁止用于一切商业用途。之前复习了一下Android的基础知识,自己又没有完全开发过一个能用的App,都是写一些小Demo。于是就想写一个简单的App来巩固自己的知识。于是SpecialDay就诞生了。一、需求分析作为一款倒计时的App,最主要的功能就是用户添加提醒事件,然后在App主页面向用户展示事件的剩余天数。并且有一些事件属于是每年重复或每月重复的事件,用户在添加事件的时候可以选择重复类型。App需要调整重复事件的事件。对于已有的事件用.

2022-01-15 13:25:52 2072 1

原创 探索Android四大组件之广播

目录一、广播的机制二、探索广播1.动态注册2.静态注册和发送标准广播3.发送有序广播三、提出问题第一个问题第二个问题第三个问题四、探索问题第一个问题第二个问题第三个问题广播是个好东西,我们的程序可以发送广播和接受广播,以通知别的程序一些消息,或接受来自别的程序的消息。一、广播的机制广播分为两种广播: 标准广播 这是一种异步的广播。在广播发出去之后,所有的对应的broadcast Receiver都能接收到这个广播消息。这样的广播效

2021-12-31 22:04:03 1543

原创 探索Activity的生命周期和启动模式(Kotlin)

Activity作为Android的四大组件之一,也是Android最基础的东西,是非常重要的部分。搞清楚Activity的生命周期和启动模式,能够使我们设计出更流畅的程序。本文主要记录我对Activity生命周期和启动模式的探索,从实践出发来掌握理论。一、基础知识1.返回栈Android是通过返回栈来管理Activity的。每启动一个Activity,就会把该Activity放入栈中,并且处于栈顶;当去销毁一个Activity时,就会把该Activity从栈顶去除。​...

2021-12-28 11:24:30 1539

原创 记录一次python执行Windows的set命令踩坑

踩坑问题在一次脚本的开发中,我希望设置一下环境变量的值。因为实习公司给的是Windows开发,所以环境变量的值要用set来改变,而不是Linux里的export。关于set的基本使用这里不过多赘述,windows已经讲得很清楚了,大家可以通过命令行输入 set /?来查看说明。这里用一个测试来说明我的问题。 首先先新建一个环境变量。 在命令行使用set testVar来查看变量的值。 然后通过 set testVar = false来改变变量的值,再打印看一.

2021-09-23 12:00:56 593

原创 GestureDetector事件源码分析

GestureDetector事件源码分析一、什么是GestureDetector?Gesture :手势Detector : 检测器。对于MotionEvent里的手势,只有简单的up、down、move等简单手势。当手势复杂的时候,这些简单的动作显然满足不了我们,或者说我们自己实现会比较复杂。GestureDetector是官方提供给我们用于检测手势的类,内部帮我们封装好了很多的手势事件,并且提供给了我们三个接口: OnContextClickListener 用于监听鼠标的点

2021-09-13 19:02:02 573

原创 [入门向]关于RecyclerView的事件拦截机制

发现问题最近在利用RecyclerView做开发的时候,遇到了一点问题:我对RecyclerView的子项添加了事件的监听,对ACTION_DOWN,ACTION_UP,ACTION_MOVE都有一些事件的处理。我们知道,一次事件总是从ACTION_DOWN开始,中间经历n次ACTION_MOVE,最终以ACTION_UP结束。但是却发现ACTION_MOVE和ACTION_UP的分支执行不了。在手指滑动的时候会造成RecyclerView的列表滚动。原因分析在刚开始开发的时..

2021-08-30 17:06:55 3494 5

空空如也

空空如也

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

TA关注的人

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