- 博客(28)
- 资源 (4)
- 收藏
- 关注
原创 android9、10、11反射限制(Hidden Api)分析以及解决方法
android9、10、11反射限制(Hidden Api)分析以及解决方法
2022-06-09 18:07:08
7403
4
原创 Android Native崩溃分析方法记录
Signal含义介绍:https://www.mkssoftware.com/docs/man5/siginfo_t.5.aspNative崩溃堆栈解读进程信息:pid表示进程号,tid表示线程号,name表示进程名错误信号:signal 11表示信号的数字,SIGSEGV表示信号的名字,code 1(SEGV_MAPERR)表示出错代码,fault addr 00000000 表示出错的地址。寄存器快照:进程收到错误信号时保存下来的寄存器快照,一共有15个寄存器。堆栈信息:##00表示栈顶,
2021-09-16 21:02:05
3313
1
原创 Android 事件分发总结
文章目录事件分发常见的事件类型MotionEvent常用的方法requestDisallowInterceptTouchEvent() - 阻止父布局拦截事件事件分发机制事件分发相关方法事件分发流向伪代码看事件分发方法的关系事件分发源码View的OnTouchListener解析滑动冲突与解决外敷 - 外部拦截内服 - 内部拦截实战 - ViewPage2 + DrawerLayout + RecyclerView冲突惨案事件分发事件分发就是用户触摸屏幕所产生的一系列事件的传递。常见的事件类型//
2021-08-07 14:07:20
243
原创 Java并发编程 VII - Lock
文章目录什么是Lock即生管程 何生锁并发编程两大核心 - 互斥、同步Lock的优势ReentrantLock怎么用普通加锁支持响应中断的加锁非阻塞的获取锁支持超时的加锁Condition怎么用ReentrantLock实现原理AQS可重入性同步状态stateCLH 队列锁LockSupport非公平锁 - NonfairSynclock()源码解析lock()小结unlock()源码解析unlock()小结公平锁 - FairSync非公平锁什么情况下会被插队?为什么ReentrantLock默认非公平锁
2021-08-01 22:54:44
260
原创 Android 动画相关面试总结
1 动画分类1.1 动画类型有哪几种?它们的区别在哪里?两种。视图动画、属性动画视图动画包括:逐帧动画(frame-by-frame animation)、补间动画(tweened animation)属性动画包括:ValueAnimator、ObjectAnimator 、AnimatorSet区别:视图动画只能作用于View,而属性动画能作用于任何对象。1.2 两种动画类型它们的优缺点分别是什么?视图动画:优点:使用简单,并且设置需要的时间较短。缺点:只能对公开对象的部分添加动画效果
2021-07-31 23:27:08
503
1
原创 Android 动画总结
动画分类Android动画分为视图动画和属性动画动画系列文章:动画入门和进阶文章视图动画包括:逐帧动画(frame-by-frame animation)、补间动画(tweened animation)作用:能为View对象添加动画效果。优点:使用简单,并且设置需要的时间较短。缺点:只能对公开对象的部分添加动画效果(例如:可以对View缩放和旋转添加动画,但无法对背景颜色这样做);只能对绘制视图的位置进行修改,而不能修改实际的视图本身(例如:View位移到了上方,但是其点击区域还是在原
2021-07-31 21:08:35
143
原创 Java并发编程 VI - 线程生命周期与线程间的协作
文章目录线程的生命周期线程生命周期介绍线程生命周期的切换Running -> RunnableRunning -> BlockedBlocked -> RunnableRunning -> Terminatedwait/notify/notifyAll方法解析为什么wait/notify/notifyAll必须配合synchronized使用wait()notify()/notifyAll()sleep/join/yield方法解析sleep()join()yield()线程的生命
2021-06-30 22:13:57
259
原创 Java并发编程 V - 并发的万能钥匙synchronized
文章目录synchronize关键字作用synchronize关键字使用“对象锁”"类锁"自定义“对象锁”synchronize实现原理管程管程的实现锁优化适应性自旋锁锁消除锁粗化锁升级偏向锁轻量级锁有了synchronized为什么还需要volatile?synchronize关键字作用在并发环境中,保证修饰部分的可见性、原子性、有序性。synchronize关键字能够修饰方法、代码块。synchronize关键字使用public class SyncTest { private in
2021-06-29 14:32:11
320
原创 Java并发编程 I - 并发问题的源头
文章目录线程与进程进程(Process)线程(Thread)CPU时间分片并发是什么资源共享是什么并发编程并发问题的源头原子性问题为什么线程操作会被打断原子性问题例子可见性问题CPU的缓存一致性缓存一致性缓存不一致如果保证CPU的缓存一致性可见性问题例子有序性问题有序性问题例子Java内存模型Happens-Before规则1. 顺序性规则2. volatile变量规则3. 传递性规则4. 管程中锁的规则5. 线程start()规则6. 线程join()规则线程与进程进程(Process)是计算机中的
2021-06-12 10:52:46
1352
1
原创 Java并发编程 IV - volatile关键字与Atomic类
文章目录volatile关键字的作用volatile关键字的应用可见性问题的例子有序性问题的例子为什么会出现可见性问题cpu的缓存一致性如果保证cpu的缓存一致性volatile关键字是如何保证可见性、有序性的Java concurrent包中的Atomic类Atomic类怎么支持原子性CAS是什么CAS有什么缺陷只能保证单个共享变量的原子性高并发下,自旋开销大ABA问题volatile关键字的作用保证可见性:所有线程都能看到共享内存的最新状态。当程序执行到volatile变量的读或写时,在其前面的操
2021-06-09 19:56:32
350
原创 Java代码转汇编代码的方法
1、下载hsdis-amd64.dylib工具链接: https://pan.baidu.com/s/1Qpww4ysxMQXgdekiSuxdIA 密码: 1jva2、将hsdis-amd64.dylib放到Jdk对应文件夹中将工具放到…/jdk1.8.0_181.jdk/Contents/Home/jre/lib/server/3、使用hsdis-amd64.dylib工具通过在执行java命令的时候增加配置参数,执行java文件的同时输出其汇编代码。参数为:-server -Xco
2021-06-04 10:45:51
2588
原创 Java并发编程 III - 让共享数据只读(final关键字)
文章目录final关键字基本用法修饰类修饰方法修饰变量final变量 与 普通变量 区别final 与 static 区别final关键字作用final修饰变量能够提供性能final修饰的变量是线程安全的(没有共享就没有伤害)final关键字基本用法修饰类final修饰的类:类不能被继承;所有成员方法都会被隐式地指定为final方法。常见的String、Long、Integer等包装类都是final修饰的类。修饰方法final修饰的方法:子类无法重写该方法。修饰变量final修饰的变量
2021-06-02 20:58:08
351
原创 Java IO学习记录
装饰器模式(Decorator)以人靠衣装为例子Component:抽象接口/类(人的颜值)ComcreteComponet:被装饰者(人)Decorator:装饰器(人身外物的统称)ConcreteDecoratorA:饰品A(衣服 - 穿上衣服人的颜值会提高)ConcreteDecoratorB:饰品B(鞋子 - 穿上鞋子人的颜值也会提高)什么是装饰器模式装饰器模式允许你向一个现有的对象添加新的功能,同时又不改变其结构,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原
2021-05-13 21:35:42
115
原创 Android Parcelable序列化源码解析
本篇从使用Android Parcelable序列化一个简单的对象,对其序列化后的十六进制数据进行分析,然后对序列化过程的源码进行解读。ヾ(◍°∇°◍)ノ゙文章目录序列化数据分析源码相关类整理序列化源码解析Java层Parcel对象的创建过程Native层Parcel对象的创建过程Parcel写入对象解析类型标识符以及类名称的写入变量值的写入native Parcel#writeString16函数解析native Parcel#writeInt32函数解析marshall方法小结反序列化源码解析unm
2021-04-13 22:08:06
1689
2
原创 Java Serializable序列化源码解析(ObjectOutputStream、ObjectInputStream)
本篇从使用Java Serializable序列化一个简单的对象来进行分析,分析序列化后的十六进制数据对序列化过程的源码进行解读。ヾ(◍°∇°◍)ノ゙ 文章目录序列化对象分析序列化流ObjectOutputStream源码解读反序列化流ObjectInputStream源码解读序列化对象分析先康康测试代码,将对象B序列化到文件test.txt中package com.llk.kt.s;public class STest { static class A implements Seri
2021-04-07 23:21:30
506
4
原创 Java Serializable、Android Parcelable序列化学习记录
文章目录什么是序列化序列化有什么用常见的序列化协议XMLJSONProtoBuff序列化怎么用Java的SerializableSerializable接口的使用serialVersionUID对象序列化只关注非静态成员变量子类与父类的序列化关系transient关键字的使用让字段不参与序列化字段加了transient,还要序列化它Externalizable接口的使用单例模式与序列化Android的Parcelable持久化保存ParcelableSerializable 与 Parcelable的比较序
2021-04-07 21:25:39
274
3
原创 Java注解处理器学习记录(实现乞丐版ButterKnife)
文章目录什么是注解处理器(Annotation Processing Tool)注解处理器怎么用step1. 创建Java Librarystep2. 创建注解类step3. 使用注解step4. 创建注解处理器类step5. 声明注解处理类方法一、手动生成Processor文件方法二、依赖auto-service库自动生成注意:有坑!@AutoService(Process.class) 高版本gradle(5+)没有自动生成文件什么是ElementElement子接口Element接口族和Type接口族
2021-04-01 08:01:11
276
原创 Java注解学习记录(反射也能实现ButterKnife)
文章目录什么是注解(Annotation)注解有什么用注解怎么用注解关键字 @interface注解属性的数据类型元注解@Retention@Target@Documented@Inherited@RepeatableJava内置的注解如何获取注解反射获取运行期注解结合反射与注解实现类似ButterKnife的功能反射处理注解的缺点APT处理编译期注解什么是注解(Annotation)官方:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上
2021-04-01 07:54:43
224
原创 Java动态代理学习记录
动态代理学习记录,欢迎纠错o(╥﹏╥)o文章目录代理模式静态代理模式静态代理缺点动态代理模式动态代理缺点:动态代理怎么用方式一:Proxy.newProxyInstance方式二:Proxy.getProxyClass动态代理的原理动态代理Class长啥样?动态代理Class是怎么生成的代理模式定义:给目标对象提供一个代理对象,并由代理对象控制对象的引用。目的:引入代理对象简介访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性;通过代理对象增强原有的业务。角色:(以一个找代购买鞋子的
2021-03-22 22:39:29
138
原创 Java反射学习记录
反射学习记录,欢迎纠错o(╥﹏╥)o文章目录什么是反射(Reflection)反射有什么用反射怎么用ClassConstructor静态内部类、外部类的实例化非静态内部类的实例化Field反射public属性反射protected属性反射private属性反射静态变量反射常量属性Method反射public方法反射private方法反射protected方法反射静态方法Type什么是Type反射实例化泛型类通过Type获取父类的泛型参数信息怎么获取当前类的泛型实参?反射private的Field与Meth
2021-03-20 20:56:27
143
原创 Java泛型学习记录
1 什么是泛型(Generic Type)“参数化类型” 就是所操作的数据类型被指定为一个参数,然后在使用/调用时传入具体的类型。2 泛型怎么用2.1 泛型类class A<T>{ T t; public void set(T t){ this.t = t; } public T get(){ return t; }}//泛型类的使用A<String> a = new A<>();2.2 泛型接口in
2021-03-14 13:02:00
1540
3
原创 面试中 - Handler引发的那些灵魂拷问
努力完善中。。。o(╥﹏╥)o 如果还有遇到别的问题的同学评论区打上,我会补上的。也欢迎纠错!1 Handler是什么?android提供的线程切换工具类。主要的作用是通过handler实现从子线程切换回主线程进行ui刷新操作。1.1 为什么Handler能实现线程切换?在创建Handler的时候需要传入目标线程的Looper。(没有传入Looper默认拿当前线程的Looper,如果当前线程也没有准备好Looper会抛异常)而当sendMessage的时候,会将当前的Handler对象赋值给
2021-02-06 11:35:11
2896
2
原创 Handler源码学习记录(java层、native层)
Handler源码学习记录(java层、native层)宗旨:学习记录我看得懂就行!!!模仿Handler原理,使用eventfd+epoll实现Handler基础功能的小案例 -> gayhub地址(MessageQueueDemo)java层Handler.java(线程间切换的工具类)三种消息类型同步消息:最常用的消息;屏障消息(同步屏障):该消息无target。在消息队列中插入后会挡住后边的所有同步消息让异步消息先走。撤销该屏障同步消息才能继续通行;异步消息:享有优先权的消息。
2021-02-03 09:11:47
1799
2
转载 Android辅助调试平台
风云调试平台是一站式的Android辅助调试平台,目标是提高测试人员的工作效率,辅助测试和开发人员快速采集分析日志,减少开发人员的出差成本。一、目标使用场景:车机方案测试和开发、智能机顶盒方案测试和开发、智能电视方案测试和开发、PAD方案测试和开发、智能家居...
2019-01-12 14:37:15
289
原创 多模块依赖打包aar/jar的方法以及遇到的坑
内容介绍多模块依赖打包成一个aar方法介绍多模块java文件打包jar的方法介绍使用过程中踩到的一些坑1. 多模块依赖打包成一个aar方法介绍在你工程里某个模块添加的插件为library的时候,编译生成的产物就是aar包(其实就是个压缩包里面装了资源文件跟jar还有些配置文件,直接解压就能看到)。在studio编aar的时候,只会将你的当前模块的内容打包,尽管你依赖了其他模块,也不...
2018-11-12 10:05:02
9492
原创 Android项目 匹配Text里面的Emoji 和 QQ表情
在text里面显示emoji 和 QQ表情,在没有系统不支持emoji的情况下,使用项目emoji字库,显示你想要的emoji表情。
2016-12-15 13:28:25
3149
android 匹配Text里面的Emoji 和 QQ表情
2016-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人