自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HarmonyOS

在UIAbility实例创建之前,允许开发者为该实例创建一个唯一的字符串Key,创建的UIAbility实例绑定Key之后,后续每次调用startAbility()方法时,都会询问应用使用哪个Key对应的UIAbility实例来响应startAbility()请求。上文已经提到,组件的销毁是从组件树上直接摘下子树,所以先调用父组件的aboutToDisappear,再调用子组件的aboutToDisappear,然后执行初始化新页面的生命周期流程。需要注意的是,@Link变量不能在组件内部进行初始化。

2024-04-17 14:38:45 1034

原创 组件化/Kotlin

Kotlin中使用class关键字定义类,类可以有主构造器、次构造器、属性、方法、初始化块等组成部分。类有以下特性:类可以使用open关键字标记为可继承的,否则默认为不可继承的类可以使用abstract关键字标记为抽象的,抽象类不能被实例化,只能被继承类可以使用data关键字标记为数据类,数据类会自动生成equals、hashCode、toString、copy等方法类可以使用sealed关键字标记为密封类,密封类的子类只能在同一个文件中定义,用于表示有限的继承层次。

2024-04-12 16:19:58 903 1

原创 开源框架/Jetpack

应用拦截器在RetryAndFollowUpInterceptor之前,网络拦截器位于ConnectInterceptor和CallServerInterceptor之间.一旦发生错误重试或者网络重定向,网络拦截器可能执行多次,因为相当于进行了二次请求,但是应用拦截器永远只会触发一次。另外如果在CacheInterceptor中命中了缓存就不需要走网络请求了,因此会存在短路网络拦截器的情况。从使用场景看,应用拦截器因为只会调用一次,通常用于统计客户端的网络请求发起情况;

2024-04-11 15:37:17 781

原创 设计模式~

优点:相比于工厂方法模式不用一直创建新的对应的类的小工厂,扩展性更加,不会使代码越来越多,越复杂,把生产对象的过程抽象化,这样就可以和业务逻辑解耦,如果有新扩展,可以在IOHandlerFactory中增加对应的方法。程序中包括一个被观察者,多个观察者对象,消息通知是遍历执行的,一个观察者卡顿,会影响整体的执行效率,这时候可以考虑采用异步的方式。缺点:工厂方法模式的缺点是每增加一个java类,就需要增加一个对应的工厂类,当我们的类很多的时候,那么对应的工厂类也会很多。

2024-04-11 15:37:00 669

原创 网络编程/其他

(1)HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。(2)使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。

2024-04-11 15:36:50 551

原创 Framework/性能优化

UI线程创建时,就创建了一个Looper,Looper内部维护这一个MessageQueue。Looper通过开启一个while(true)死循环来轮询MessageQueue中的Message。当Looper轮询到Message时,就分发此Message。Handler在子线程发送消息到MessageQueue,Message被Looper取出来后,分发给handler的handleMessage方法来处理。

2024-04-11 15:36:17 575

原创 基础/UI/组件

(1)继承现有控件(TextView/ImageView/LinearLayout),对其控件的功能进行拓展(2)将现有控件进行组合,实现功能更加强大控件。(3)重写View/ViewGroup实现全新的控件。

2024-04-09 22:03:14 965

原创 面向对象/集合框架/并发

(1)一个类只能继承一个抽象类,而一个类却可以实现多个接口(2)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法(3)抽象类可以提供成员方法的实现细节,而接口中的方法不可以(4)接口的方法默认是public,所有方法在接口中不能有实现,抽象类可以有非抽象的方法(5)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。

2024-04-09 22:03:00 676

原创 试题111

3.MVVM原理-lifecycle运行机制、viewmodel存储机制、APT。6.LiveData数据倒灌问题 内部version。10.NestedScrollView原理。5.连续点击处理-kotlin扩展方法。RxJava 布局文件里面绑定。9.自定义view滑动冲突。8.线程安全 - AQS。2.ARouter原理。

2024-04-07 22:24:23 87

原创 Android外部存储与内部存储详解

Cache和Files分别对应【设置】里应用的【清除缓存】和【清除数据】功能,一些手机助手在清理垃圾文件的时候也是清理Cache缓存。默认路径是xxxxx/包名/cache,不同手机厂商的这个路径有差别。Cache:获取App的缓存路径,用来放一些临时文件。Files:获取app的文件路径,用来放一些长期文件。Cache和Files的区别。

2023-09-12 19:27:43 1764

原创 MySQL

增加查询效率(数据量大),当给表添加索引后,新插入、删除一条数据,就会让索引进行重新排列,频繁的增加或者删除数据,索引的效率不会很高。alter table 从表名 add constraint 外键名 foreign key(从表外键列名) references 主表(主键列名)insert into 表(字段1,字段2,字段3…) values(值1, 值2,值3…),(值1, 值2,值3…),(值1, 值2,值3…外键:把一张表的主键拿到另一张表中作为一个普通的字段,通过外键可以把两张表连接起来。

2023-09-10 16:59:38 51

原创 Bitmap加载方式

Bitmap

2022-09-05 22:09:05 1251 1

原创 RecyclerView 性能优化

1. 数据处理和视图加载分离获取到数据的处理逻辑我们也应该放在异步处理,这样 Adapter 在 notify change 后,ViewHolder 就可以简单无压力地做数据与视图的绑定逻辑2. 数据优化对于新增或者删除数据通过 DiffUtil / AsyncListDiffer来进行局部刷新数据(覆写getChangePayload方法进行控件级别的刷新)3. 布局优化减少布局层级,可以考虑使用自定义 View 来减少层级,或者更合理地设置布局来减少层级从而减少过渡绘制;...

2021-06-08 22:05:56 163

原创 Handler机制

Handler通信Handler:负责发送消息及处理消息Looper:复制不断的从消息队列中取出消息,并且给发送本条消息的HandlerMessageQueue:负责存储消息Message:消息本身,负责携带数据Handler的构造方法

2021-06-08 21:33:43 67

原创 自定义View和事件分发

2.自定义View和ViewGroup套路总结2.1 自定义View的套路:2.1.1 自定义属性,获取自定义属性(达到配置的效果) 2.1.2 onMeasure()方法用于测量计算自己的宽高,前提是继承自View,如果是继承自系统已有的 TextView , Button ,已经给你计算好了宽高 2.1.3 onDraw() 用于绘制自己的显示 2.1.4 onTouch() 用于与用户交互2.2 自定义ViewGroup的套路: 2.2.1 自定义属性,获取

2021-04-25 00:30:32 145

原创 Material Design - CoordinatorLayout、SnackBar源码分析

Material Design - CoordinatorLayout、SnackBar源码分析CoordinatorLayout的behavior如何工作自定义Behavior放的全类名parseBehavior解析布局文件中制定的BehaviorBehavior到底是怎么实例的,调用 parseBehavior 解析我们设置的 layout_behavior :1.获取设置好的全类名 xxx.xx.xx 还可以是 .xx2.通过类名获取 class 然后获取两个参数的构造方法3.通

2021-04-22 00:06:31 83

原创 Kotlin笔记

一.Lambda表达式Lambda结构:{参数1 :参数类型,参数2:参数类型 -> 函数体}val list = listOf("apple", "Orange", "Banana")val lambda = {fruit: String -> fruit.length}val maxLengthFruit = list.maxBy(lambda)即val maxLen...

2020-05-19 00:15:36 150

原创 Kotlin高阶函数

定义:参数有函数类型或者返回值是函数类型的函数,都叫做高阶函数。fun a(funParam: (Int) -> String): String { return funParam(1)}要传一个函数类型的参数,或者把一个函数类型的对象赋值给变量有三种方法fun num1AndNum2(num1: Int, num2: Int, operation: (Int, Int) -> Int): Int { val result = operation(num1, num2) ret

2020-05-17 12:35:10 270

原创 LruCache和DiskLruCache

//** * 三级缓存: * 一级缓存:内存缓存 * 二级缓存:硬盘缓存 * 三级缓存:网络缓存 * * @author 43497 * @date 2018/3/15 */public class LruCacheUtil {/** * 内存缓存最大值--设置为可使用的内存的1/8 * LruCache 如果缓存的大小已经达到了最大值,最近时间最少使用...

2018-03-18 22:06:12 207

原创 Android主题

1.系统主题 Theme.Light:标准主题的变体,该主题的背景和用户元素使用相反的颜色主题。它是Android3.0以前版本的应用程序默认推荐的使用主题。 Theme.NoTitleBar.Fullscreen:移除标题栏和状态栏,全屏显示。 Theme.Dialog:让Activity看起来像对话框的有用主题。 Them...

2017-12-16 22:00:45 183

空空如也

空空如也

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

TA关注的人

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