- 博客(132)
- 资源 (4)
- 收藏
- 关注
原创 Handle
同步屏障是 Android 消息机制中的高级功能,用于临时阻塞普通同步消息,优先处理异步消息(如 UI 绘制任务)。同步屏障是 Android 消息系统的底层能力,正确使用可优化高优先级任务调度,但需谨慎处理移除时机。实际开发中,非必要不直接使用,优先考虑。三者协同工作,实现线程间通信和任务调度。发送 Message (sendMessage/post)轮询取出 Message (loop())处理消息 (handleMessage)在 Android 的消息机制中,,是理解事件驱动模型的核心基础。
2025-07-07 16:47:53
371
原创 Android 网络请求优化全面指南
build()${")${1e6分场景选择策略即时通讯:WebSocket常规请求:HTTP/2 + 连接复用大数据传输:分块上传/下载网络状态感知优雅降级弱网环境下降低图片质量优先加载关键数据提供离线功能通过综合应用以上策略,可以显著提升应用的网络请求效率和用户体验。建议根据具体业务场景选择合适的优化组合,并通过持续监控来验证优化效果。
2025-07-04 20:27:41
790
原创 Android BitmapRegionDecoder 详解
的类,适用于加载超大型图片(如高清地图、长图、全景照片等),避免一次性加载整个图片导致内存溢出(OOM)。表示不共享输入流,解码完成后需手动关闭。避免频繁创建/回收 Bitmap,使用。是 Android 提供的一个用于。
2025-07-04 19:48:39
421
原创 android图片优化
在 Android 中加载大图时,如果不进行优化处理,很容易导致内存溢出(OOM)和应用卡顿。通过合理使用库或手动优化,可以高效加载大图而不影响性能。,它们已封装了绝大多数优化逻辑。(如地图、高清壁画),使用。
2025-07-04 19:35:19
320
原创 Android WebView 性能优化指南
优化维度关键措施预期收益初始化延迟加载、实例复用降低内存峰值渲染硬件加速、合理布局提升流畅度20%+内存独立进程、泄漏防护减少OOM风险网络缓存策略、资源拦截节省流量30%+安全漏洞修复、接口限制提升安全性监控性能埋点、远程调试快速定位问题实际项目中,建议根据具体场景选择最适合的优化组合,并通过A/B测试验证效果。对于重度依赖WebView的应用,可以考虑使用腾讯X5等增强内核替代系统WebView。
2025-07-04 19:21:43
386
原创 单例模式7种实现
枚举方式是处理单例模式的推荐方法,因为它提供了更强的保证。枚举类型的构造器默认是私有的,所以无法通过其他类进行实例化,同时又保证了序列化时的单例特性。因此,它是实现单例的最佳方式。优点:这种方式也是懒加载的,同时保证了线程安全,且写法优雅。当getInstance()方法被调用时,才加载SingletonHolder类,从而创建Singleton的实例。优点:这种方式比较简单,在类加载时就完成了初始化,避免了线程同步问题。但它是饿汉式的,即在类加载时就创建了实例,即使没有用到这个实例。
2025-06-30 13:50:30
338
原创 约束布局属性学习
layout_constraintHorizontal_bias 是 ConstraintLayout 中的一个重要属性,用于控制一个视图在父视图或相关视图中水平位置的偏移。app:layout_constraintGuide_begin=“100dp”:距离父布局顶部100dp的位置。layout_constraintHorizontal_bias=“0.0” : 视图完全靠到父布局的左边界。layout_constraintHorizontal_bias=“1.0” : 视图完全靠到父布局的右边界。
2025-02-06 19:52:14
1109
原创 Kotlin协程中withContext、async 和 launch 的区别
withContext:不启动新协程,仅切换上下文,协程挂起直至块完成。async:启动新协程,适合需要结果的并发任务。launch:也启动新协程,但不关注返回值,更关注任务的执行及生命周期管理。
2025-01-21 14:45:46
1333
原创 kotlin的协程的基础概念
这些基础概念共同构成了Kotlin协程体系的核心,理解它们能够帮助开发者用清晰而高效的代码实现复杂的异步任务。协程的设计重点在于简化并发任务的管理,同时提高代码的可读性和可维护性。可以使用不同的Dispatcher(如Dispatchers.Main, Dispatchers.IO, Dispatchers.Default)来指定协程运行的线程环境。结构化并发提供了一种管理协程生命周期的模型,保证子协程完成前父协程不会结束。launch :用于启动一个新的协程,不返回结果,适合不需要返回值的任务。
2025-01-20 20:17:10
1171
原创 Rxjava学习总结
RxJava 中的一些基本概念包括:Observable(被观察者)Observable 是一个数据流的源头,它可以发出三种类型的事件:发射数据(OnNext),发射一个错误(OnError),或者发射完成(OnComplete)。Observer(观察者)Observer 是消费 Observable 产生的数据流的实体。它有三个方法对应 Observable 的三种事件类型:onNext,onError 和 onComplete。
2024-07-18 11:55:48
870
原创 ContentProvider执行时机
调用顺序: Application 构造方法 –> Application.attachBaseContext –> ContentProvider.onCreate –> Application.onCreate –> Activity.onCreate。
2022-09-29 11:17:19
353
原创 重拾设计模式
为何又重新整理起来设计模式,目前开发已经5年多,日常开发过程中也偶有用到例如工厂模式、观察者模式、builder模式、单例模式等,但是真正对于什么模式可以解决什么问题还是不够熟稔于心,做不到灵活运用,所以在此时此刻,有必要重新整理一遍面向对象的基本原则和设计模式,力求达到熟稔于心、融会贯通、熟稔于心:
2022-09-15 12:20:15
140
原创 The binary version of its metadata is 1.6.0, expected version is 1.4.2.
kotlin 版本不一致导致编译不过
2022-07-29 12:13:37
4526
原创 Android中 DialogFragment 全屏时 在android11机型失效的问题
由于 Window 的 decorView 默认是设置有 10dp 的padding。需要获取到decorView后设置其padding为(0, 0, 0, 0) 即可。override fun onStart() { Logger.i(TAG, "onStart") super.onStart() setWindowParam() } /** * 设置dialog的 window 参数 */ private f
2021-10-13 10:28:36
561
1
原创 设置图片的透明度从左到右渐变
一、设置图片的透明度从左到右渐变/** * 设置图片的透明度从左到右渐变,使右边缘平滑过渡(注意只跟着x坐标变) * * @param num 范围为0-100,0为全透明,100为不透明 */ public static Bitmap getTransAlphaBitmap(Bitmap sourceImg, float num) { if (sourceImg == null) { return null;
2021-09-09 16:24:02
2387
1
原创 Gradle知识点
1、applicationVariants参考:https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/ApplicationVariantbuild.gradleandroid.applicationVariants.all { variant -> println("applicationVariants") println(variant.name
2021-05-22 11:02:20
542
原创 使用Nexus搭建自己的Maven私服
转载:1、使用Nexus搭建自己的Maven私服及上传下载aar2、publish时出现400,bad request 可能的俩原因
2021-05-19 12:23:30
157
原创 HTTPS数据传输流程
1.客户端向服务器端发起HTTPS请求,连接到服务器端的443端口上2.服务器端有一个秘钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,将公钥发送给客户端3.客户端收到服务器端的公钥之后,对公钥进行检查,验证其合法性,如果发现公钥有问题,那么HTTPS传输无法继续;如果合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的秘钥,即客户端秘钥,然后用服务器端的公钥对客户端秘钥进行非对称加密,这样客户端秘钥就变成了密文了,至此,https中的第一次HTTP请求结束4.客户端
2020-05-14 11:03:24
1141
原创 图片打标签之获取图片在ImageView中的坐标
android matrix 最全方法详解与进阶(完整篇)imageView = findViewById(R.id.imageview); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick...
2020-04-19 17:30:36
1030
原创 RecyclerView滚动到指定位置
1、mLayoutManagerprivate void moveToPosition(int position) { if (position >= 0) { mLayoutManager.scrollToPositionWithOffset(3, 0); } }2、LinearSmoothScrollermTopSm...
2020-04-10 16:26:56
603
原创 Kotlin基础
一. Kotlin 基础知识1. HelloWorld:fun main(args: Array<String>){ System.out.println("hello world")}2、常见数据类型3、类型推断4、取值范围var aByte:Byte = Byte.MAX_VALUEvar bByte:Byte = Byte.MIN_VALUE5、函...
2020-04-04 11:25:53
374
原创 Kotlin学习笔记
文章目录一. Kotlin 基础知识1.1 函数结构:1.2 变量1.3 when、循环语句1.3.1 when1.3.2 循环语句1.4 Kotlin 异常处理1.5 "?" 和 "!!"1.6 重载调用函数1.7 顶级函数和属性(静态的)1.8 可变参数 和 展开操作符1.9 中缀调用infix1.10 本地函数1.11 访问修饰符一. Kotlin 基础知识1...
2020-04-04 11:15:26
493
原创 Hook技术
参考:https://www.jianshu.com/p/4f6d20076922使用 Java 反射实现 API Hook通过对 Android 平台的虚拟机注入与 Java 反射的方式,来改变 Android 虚拟机调用函数的方式(ClassLoader),从而达到 Java 函数重定向的目的,这里我们将此类操作称为 Java API Hook。下面通过 Hook View 的 OnC...
2020-02-04 17:40:44
227
原创 动态代理
代理模式的应用场景:1、例如要给某个方法加上监控,记录方法开始时候的时间,方法结束时的时间。静态代理:静态代理缺点:接口与代理类是1对1的,有多个接口需要代理,就需要新建多个代理类,繁琐,类爆炸。 public interface IPerson { void say(); } public static class Man implements I...
2020-02-04 16:47:09
169
原创 android计算bitmap内存及内存优化
参考:https://www.cnblogs.com/dasusu/p/9789389.htmlhttp://www.cocoachina.com/articles/30884计算公式:1、如果设置了inSampleSize=1,2,4,8 , 则相应的Sample高度 = 原图高度 * 1,1/2, 1/4, 1/8;Sample宽度 = 原图宽度 * 1,1/2, 1/4, 1/8...
2020-01-11 21:51:15
480
jython-standalone-2.7.0.jar
2017-01-10
genymotion-arm-translation
2016-12-27
arm-genymotion to translation.zip
2016-12-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人