首页
学习
活动
专区
工具
TVP
发布

Android进阶编程

分享有用的Android知识。
专栏作者
32
文章
37867
阅读量
15
订阅数
Android 插件化实现原理解析
组件化开发就是将一个app分成多个模块,每个模块都是一个个组件,开发的过程中我们可以让这些组件相互依赖或者单独调试组件,但是最终发布的时候是将这些组件并成一个apk发布,而插件话 是分为一个宿主 和多个插件apk ,插件话成本高就是 适配 android版本,每个android版本的源码实现都不同,每个新版本出来,你就得去看源码然后 对这个源码做适配。
李林LiLin
2023-04-27
4110
RecyclerView四级缓存初探
RecycleView的四级缓存是由三个类共同作用完成的,Recycler、RecycledViewPool和ViewCacheExtension。
李林LiLin
2023-03-10
1.2K0
Android之IPC机制问题汇总
1、什么是Binder? 直观来说,Binder是Android中的一个类,它继承了IBinder接口。 从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在linux中没有。 从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager,etc)和相应ManagerService的桥梁。
李林LiLin
2023-03-03
3100
Java基础问题汇总
1、static关键字 1.1、static关键字可以修饰什么?static使用的注意事项有哪些?static关键字的特点?使用static存在什么问题? 可以用来修饰:成员变量,成员方法,代码块,内部类等。具体如下所示 修饰成员变量和成员方法 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。 被static 声明的成员变量属于静态成员变量,静态变量存放在Java内存区域的方法区。 静态代码块 静态代码块定义在类中方法外,静态代码块在非静态
李林LiLin
2023-02-26
3440
Android http的请求体body的几种数据格式
它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;
李林LiLin
2021-07-18
2.2K0
AsyncTask 相关问题
AsyncTask 对应的线程池 ThreadPoolExecutor 都是进程范围内共享的,且都是static 的,所以是 Asynctask 控制着进程范围内所有的子类实例。由于这个限制的存在,当使用默认线程池时,如果线程数超过线程池的最大容量,线程池就会爆掉(3.0 后默认串行执行,不会出现个问题)。针对这种情况,可以尝试自定义线程池,配合 Asynctask 使用。
李林LiLin
2021-04-05
5240
LeakCanary源码分析(基于2.4版本)
LeakCanary内部用到了Refercence及ReferenceQueue来实现对对象是否被回收的监听。这是LeakCanary的核心逻辑,因此在讲解LeakCanary之前,我们先来简单了解一下Refercence及ReferenceQueue。
李林LiLin
2021-03-04
1.6K0
Kotlin 集合使用详细解析
Kotlin 标准库提供了基本集合类型的实现: set、list 以及 map。 一对接口代表每种集合类型:
李林LiLin
2021-02-08
3.8K0
ViewRootImpl 源码解析(三大主要功能实现解析)
在Android2.2以后用ViewRootImpl代替ViewRoot,对应于ViewRootImpl.java,他是链接WindowManager和DecorView的纽带,另外View的绘制也是通过ViewRootImpl来完成的。
李林LiLin
2021-01-10
2.3K1
Kotlin 开发中遇到的坑(持续更新)
由代码可见,mHomeWorkId 是一个不能为null的String。然后通过intent.getStringExtra 方法给mHomeWorkId赋值。
李林LiLin
2021-01-03
4.2K0
Android 项目构建流程
当我们打开一个项目,我们可以看到的是我们写的Java Code文件or Other JVM Code,资源文件,Build配置文件,但是通过run the project,我们就可以得到一个在我们的Andoid设备上可以运行的Apk,上线应用市场,还需要我们对其进行签名处理,来确保我们App的唯一性和安全性。整个过程就是所谓的项目构建。
李林LiLin
2020-12-27
1.2K0
Handler 消息机制原来解析
分为同步消息、异步消息、屏障消息。但是异步消息和屏障消息的相关API都是隐藏的,需要通过反射才能使用。
李林LiLin
2020-12-21
8280
不可不说的Java“锁”事
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。
李林LiLin
2020-12-16
3260
Java线程池实现原理及其在美团业务中的实践
随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。
李林LiLin
2020-12-16
1.1K0
Activity 的启动方式和 flag 详解
活动的:Activity 在栈顶,它是可视、有焦点、可接受用户输入的。Android 试图尽最大可能保持它活动状态,杀死其它 Activity 来确保当前活动 Activity 有足够的资源可使用。 当另外一个 Activity 被激活,这个将会被暂停。
李林LiLin
2020-12-05
1.5K0
Android Binder 设计篇
之前看过一篇关于Binder设计相关的文章,但是之前的连接打不开了。于是在网上搜索很久才找到原文地址:https://blog.csdn.net/universus/article/details/6211589。这篇文章写得非常好,建议在学习Binder的小伙伴都可以保存下来多读几遍。唯一有点瑕疵的就是,这篇文章可能是作者翻译的,有些语法读起来不是很通顺。这里也自己记录一份,顺便做些标记,方便以后复习,也防止以后找不到。
李林LiLin
2020-12-04
6580
Android 性能优化最佳实践
快,稳,省,小,这四点很形象的代表了性能的四个方面,同时也让我们知道我们 App 现在是否是款性能良好的 APP,如果有一项不达标,那么说明我们的应用有待优化。
李林LiLin
2020-11-22
1.2K0
java-线程池(ThreadPoolExecutor)的参数解析
很多时候为了省事用的都是Executors的方式去创建,感觉也没什么问题,不过阿里工程师的推荐自然是有道理的,以后还是尽量改用ThreadPoolExecutor的方式来创建吧,不过使用ThreadPoolExecutor方式来创建时,需要传入的参数很多,为了加深记忆,这里就简记录一下。
李林LiLin
2020-11-05
1.3K0
java数据结构与算法-快速排序
基本思想 快速排序使用分治法策略来把一个序列分为两个子序列,基本步骤为: 先从序列中取出一个数作为基准数(为了方便一般选数组的第一个数作为基准数)。 分区过程:将把这个数大的数全部放到它的右边,小于它的数全放到它的左边。 递归的对左右两个子序列进行步骤2,知道各区间只有一个数。 java代码实现 public void sort(int[] arr, int left, int right){ if(left >= right){ return; }
李林LiLin
2020-09-28
5520
java数据结构与算法-思维导图
因为最近在学习数据结构与算法相关的知识,所以打算通过写笔记的方式加强自己对数据结构与算法的理解,也是为了方便以后复习。这里整理记录了一份数据结构与算法的思维导图,也是为了以后学习更有方向性。
李林LiLin
2020-09-26
1K0
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
【玩转EdgeOne】征文进行中
限时免费体验,发文即有奖~
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档