字节卷动
字节卷动 | CSDN博客专家
博客知识包括:Android、ASM、OpenGL、C++、Java、Kotlin、Python、Shell、Jenkins、Gitlab、Git、SVN等相关进阶知识。
展开
-
【Android面试八股文】你刚刚提到了V2签名使用美团的Walle实现多渠道打包,那么你能讲一讲Android 签名的 v1、v2、v3、v4版本的区别吗?
在我的博客【Android面试八股文】你在多渠道打包方面提到了使用美团的Walle框架,那你能说一说Walle的原理吗?中,有提到美团Android自动化之旅—生成渠道包美团Android新一代渠道包生成工具现在就要来讲一讲Android 签名的 v1、v2、v3、v4版本的区别了!应用签署基于 JAR 签名。APK 签名方案 v2(在 Android 7.0 中引入)APK 签名方案 v3(在 Android 9 中引入)APK 签名方案 v4(在 Android 11 中引入)原创 2024-06-20 22:13:55 · 524 阅读 · 0 评论 -
【Android面试八股文】你在多渠道打包方面提到了使用美团的Walle框架,那你能说一说Walle的原理吗?
Walle框架实现多渠道打包的底层原理基于APK签名块的机制,通过在APK的签名块中写入渠道信息,使得每个渠道包都能包含唯一的渠道标识。Android的APK文件在签名时,会在文件末尾生成一个签名块(Signature Block),包含签名信息。Walle框架利用这一机制,在签名块中嵌入渠道信息,从而实现多渠道打包。Walle框架在APK签名完成后,通过操作ZIP文件格式,将渠道信息作为一个自定义的META-INF文件写入到签名块中。这一操作不会改变APK的内容,只是在APK末尾追加渠道信息。原创 2024-06-20 20:40:48 · 386 阅读 · 0 评论 -
【Android面试八股文】 GC的流程是怎么样的?介绍下GC回收机制与分代回收策略
一、什么是垃圾(Garbage)?二、什么是可行性分析?三、什么是GC Root对象?四、引用关系有哪些?五、什么时候进行垃圾回收?六、垃圾收集算法6.1 标记-清除(Mark-Sweep)6.2 复制(Copying)6.3 标记-整理/压缩(Mark-Compact)6.4 分代收集(Generational Garbage Collection)6.4.1 为什么需要使用分代收集策略?6.4.2 代际划分6.4.2.1 年轻代(Young Generation)6.4.2.2原创 2024-06-16 02:28:20 · 257 阅读 · 0 评论 -
【Android面试八股文】为什么Android中要设计为只能在UI线程中去更新UI?Android中子线程真的不能更新UI吗?如何在子线程中更新UI?
这种设计确保了 UI 操作的安全性和一致性,因为 Android 的视图系统并不是线程安全的,在多线程操作下可能会导致不可预期的行为或崩溃。可以利用子线程进行UI的刷新操作,从而提高绘图的效率,减少对主线程的干扰。不过,需要注意的是,在进行多线程绘图时,要小心处理线程同步问题,以避免竞争和死锁等问题。变得可见时才创建的,之前的操作是没有进行线程检查的,所以没有报错。提供了一个独立的绘图表面,这个表面可以在独立的线程上进行绘制操作。的关键特性,它允许在不影响主线程(UI线程)的情况下进行绘图操作。原创 2024-06-13 16:16:22 · 972 阅读 · 0 评论 -
找工作,你知道找你的是外包吗?这篇文章讲透各种外包、内包公司!
这类大型企业多年使用外包后遇到各种不满(如数据安全、协同问题、管理成本、被外包公司抽取人头费用等),从而演化出新的用工形式,原创 2024-06-07 20:23:55 · 1730 阅读 · 0 评论 -
【Android面试八股文】Android面试必看之插件化技术揭秘:面试官问你的每个问题都在这里!
所以,我们可以注意到,每次应用升级的一段时间内,我们的启动时长会出现波动,过了几天以后,又会达到稳定的状态。保证了收到类加载请求的时候,优先让父类加载器去加载,父类加载器处理不了的时候,才会自己去加载,保证了类加载机制的稳定性。所以我们对不同的插件包,进行打包的时候,前面的PP字段,可以进行依次递减,可以避免资源冲突的问题。对于我们安卓系统来讲,仅仅能够加载插件中的类显然是不够的,还要能够启动插件中的的。但这种方式会丢失插件化的动态性,也就是说,如果想在插件包中,加入宿主包没有注册的。原创 2024-12-19 22:47:50 · 111 阅读 · 0 评论 -
【Android面试八股文】面试官陷阱题:你能深入讲解一下Native内存与GC的联系吗?Native内存膨胀过多时会触发GC吗?如何在Java对象回收时触发Native内存回收?
Native内存的膨胀确实可以触发GC,尤其是在ART中,这种机制被用来确保Native内存的有效管理,防止因Native内存泄漏导致的内存问题。了解这一机制对于优化应用性能和处理内存泄漏问题至关重要。这也是为什么在面试中,理解Native内存与GC之间的联系是一个重要的知识点。原创 2024-12-14 16:17:33 · 109 阅读 · 0 评论 -
【Android面试八股文】你能深入剖析一下ArrayMap吗?它到底是Android开发中的性能利器还是隐藏的地雷?
当需要分配新的数组时,首先尝试从缓存中获取,而不是直接进行新的内存分配,这进一步优化了内存的分配和回收。普通业务场景下,笔者还是倾向。缓存池受到污染后,可能并不会引起崩溃,而是把隐患埋了下来,当下一次,在其它业务场景下,通过。,但由于其使用场景多为内存受限的小数据集操作,这种对数级别的时间复杂度是可以接受的。通过使用两个数组来存储键值对,减少了内存分配的次数,从而降低了垃圾回收的压力。就厉害了,并发场景下,一个数据异常,会影响到其它场景的其它。中的缓存池设计真的合理吗,如果不合理,为何其所在的。原创 2024-12-14 13:49:25 · 61 阅读 · 0 评论 -
【Android面试八股文】你开发过程中有调用过定制化framework.jar包的接口吗?在Android Studio中如何集成定制化的framework.jar?
导入项目中,以一个简单 Demo 项目举例,项目中有一个 app 模块,项目结构如下(只列出了关键文件)第一个问题毫无疑问,如果你是在相关的硬件厂商的话,基本上都是需要定制化开发的,这样你们公司编译出来的。配置完之后,点击Build->Make Project ,重新编译项目,使配置生效。配置完之后,点击Build->Make Project ,重新编译项目,使配置生效。,但是仅仅是让编译通过,不会打包到apk里面,也不需要。我这边工作中是有相关的业务,所以会调用。,无法编译,此时,我们就需要将定制化的。原创 2024-11-28 21:22:12 · 277 阅读 · 1 评论 -
【Android面试八股文】讲一讲你对Kotlin协程异常传递与处理的认识
一、协程的异常传递二、 SupervisorJob的作用2.1 使用SupervisorJob2.2 使用CoroutineScope包装SupervisorJob2.3 两者的区别2.3.1 使用 `CoroutineScope` 包装 `SupervisorJob`:2.3.2 直接使用 `SupervisorJob` 启动协程:2.3.3 总结:三、异常处理方式3.1 Launch协程构造器的异常处理3.1.1 try-catch3.1.1.1 launch 方式启动的协程中的原创 2024-11-10 22:18:00 · 145 阅读 · 0 评论 -
【Android面试八股文】你能说说协程的上下文CoroutineContext是什么?如何组合上下文中的元素?协程上下文是怎么继承的?
是一组用于定义协程行为的元素。Job:控制协程的生命周期。通过Job,我们可以启动、取消协程,或者添加协程完成时的回调。:决定协程在哪个线程上执行。允许我们将协程的任务分配到最合适的线程,这对于性能优化和线程管理至关重要。:为协程提供一个名称,这在调试和日志记录时非常有用,因为它可以帮助我们快速识别和区分不同的协程。:处理协程中未被捕获的异常。通过,我们可以捕获并处理这些异常,避免程序崩溃。原创 2024-11-09 14:20:29 · 111 阅读 · 0 评论 -
【Android面试八股文】你能说说Kotlin如何取消超时任务吗?
是 Kotlin 协程中处理超时任务的一个有用工具。它允许我们在超时时优雅地返回一个特殊值,而不是抛出异常。这使得我们可以更加灵活地控制协程的执行流程,特别是在需要处理超时逻辑时。通过使用,我们可以提高程序的健壮性和用户体验。原创 2024-11-03 23:15:09 · 102 阅读 · 0 评论 -
【Android面试八股文】你能说说kotlin怎么实现不能取消的任务吗?你知道NonCancellable吗?
可以用于结构中的任何部分,具体取决于您希望在哪个阶段确保代码不被取消。通常,将其放在finally块中是为了确保无论发生什么情况,某些关键的清理工作都能被执行。但是,根据您的具体需求,您可以灵活地在任何地方使用。是 Kotlin 协程中一个强大的工具,它允许开发者在协程被取消时执行关键的清理工作。使用时,需要仔细考虑代码的设计,确保在任何情况下都能正确地释放资源和处理异常。通过合理使用,可以提高程序的健壮性和可靠性。原创 2024-11-03 23:01:22 · 79 阅读 · 0 评论 -
【Android面试八股文】你能说说kotlin取消协程有什么副作用以及如何修复吗?
use 函数提供了一种简洁的方式来自动管理资源,它减少了样板代码,并确保了资源在使用后被自动关闭。try-catch-finally 块提供了更多的控制,允许你在异常发生时执行额外的清理工作,但它需要更多的代码。在两种情况下,资源管理都是非常重要的,以避免资源泄露和其他潜在的问题。协程取消的副作用主要体现在资源管理和数据一致性上。通过在finally块中释放资源和使用use函数管理实现了Closeable接口的资源,我们可以有效地修复这些副作用。原创 2024-11-03 22:34:42 · 103 阅读 · 0 评论 -
【Android面试八股文】你能说说kotlin怎么取消CPU密集型任务吗?
isActive是一个可以被使用在CoroutineScope中的扩展属性,检查Job是否处于活跃状态。ensureActive(),如果job处于非活跃状态,这个方法会立即抛出异常。yield函数会检查所在协程的状态,如果已经取消,则抛出CancellationException予以响应。此外,它还会尝试出让线程的执行权,给其他协程提供执行机会。原创 2024-11-03 21:57:59 · 86 阅读 · 0 评论 -
【Android面试八股文】你能说说你对协程生命周期的理解吗?
在Kotlin协程编程中,理解协程的生命周期对于编写高效、健壮的并发代码至关重要。本文将详细介绍协程的生命周期,以及如何通过Job对象来管理这些生命周期。原创 2024-11-03 13:45:22 · 94 阅读 · 0 评论 -
【Android面试八股文】你能说说协程的作用域构建器有哪些以及他们的区别吗?(coroutineScope、runBlocking和supervisorScope)
和都是协程中的作用域构建器,它们都可以用来等待多个协程的完成。主要的区别在于会阻塞当前线程,而则不会。选择使用哪一个构建器取决于你的具体需求,以及你是否需要在等待协程完成时释放线程以供其他任务使用。理解这些区别对于编写高效、响应式的协程代码至关重要。原创 2024-11-03 00:11:55 · 303 阅读 · 0 评论 -
【Android面试八股文】你能说说Kotlin协程有哪些启动模式以及它们直接有什么区别吗?
通过上述示例,我们可以看到Kotlin协程的四种启动模式在调度时机和取消响应上有明显的区别。DEFAULT模式下,协程创建后立即调度,对取消响应最敏感;ATOMIC模式下,协程在到达第一个挂起点之前不响应取消;LAZY模式下,协程只有在被需要时才开始调度;而UNDISPATCHED模式下,协程在当前调用栈中立即执行,直到遇到挂起点。原创 2024-11-03 00:03:50 · 194 阅读 · 0 评论 -
【Android面试八股文】你能说说FragmentPagerAdapter 和 FragmentStatePagerAdapter的区别吗?
的:仅仅调用detach(),将Fragment从 UI 中移除,但Fragment本身仍然保留在内存和中。因此,Fragment没有被销毁,这解释了为什么会保持所有Fragment实例在内存中。这种设计的目的为了避免每次页面切换时重新创建Fragment,从而提升性能,适用于页面较少且页面之间切换频繁的情况。通过保持Fragment在内存中,可以避免重新创建Fragment的开销,从而加快页面切换速度。的:不仅调用remove()彻底销毁Fragment,还保存Fragment的状态。这样,虽然。原创 2024-09-08 15:04:49 · 521 阅读 · 0 评论 -
【我的Android进阶之旅】快来给你的Kotlin代码添加Markdown格式的注释吧!
HTML 格式提供更多自定义的标签来精确控制注释的显示方式,适合需要精细控制的文档格式。Markdown 格式更简洁,适合开发者日常使用和快速编写注释。选择哪种格式取决于你的需求。如果需要复杂的格式,HTML 是更好的选择,而对于简单易读的注释,Markdown 更合适。原创 2024-09-01 20:46:43 · 544 阅读 · 0 评论 -
【Android面试八股文】你能说说LRU算法的原理并简单实现一下LRU算法吗?
LRU是的缩写,这种算法认为最近使用的数据是热门数据,下一次很大概率将会再次被使用。而最近很少被使用的数据,很大概率下一次不再用到。当缓存容量满的时候,优先淘汰最近很少使用的数据。假设现在缓存内部数据如图所示:这里我们将列表第一个节点称为头结点,最后一个节点为尾结点。当调用缓存获取key=1的数据,LRU算法需要将 1 这个节点移动到头结点,其余节点不变,如图所示。然后我们插入一个key=8节点,此时缓存容量到达上限,所以加入之前需要先删除数据。原创 2024-08-11 13:35:00 · 208 阅读 · 0 评论 -
【Android面试八股文】 聊聊你对SurfaceView和TextureView的理解
什么是无缓冲无缓冲:不用画布,直接在窗口上进行绘图叫做无缓冲绘图。什么是单缓冲单缓冲:用了一个画布,将所有内容都先画到画布上,在整体绘制到窗口上,就该叫做单缓冲绘图,那个画布就是一个缓冲区。什么是双缓冲双缓存:用了两个画布,一个进行临时的绘图,一个进行最终的绘图,这样就叫做双缓冲绘图。自身就实现了双缓冲,通俗来讲就是有两个缓冲区,一个后台缓冲区和一个前台缓冲区,每次后台缓冲区接受数据,当填充完整后交换给前台缓冲,这样就保证了前台缓冲里的数据都是完整的。双缓冲在更新视图时用到了两张。原创 2024-08-10 16:44:50 · 381 阅读 · 0 评论 -
【Android面试八股文】是否了解SurfaceView?它和View的区别是什么?GLSurfaceView又是什么?
什么是无缓冲无缓冲:不用画布,直接在窗口上进行绘图叫做无缓冲绘图。什么是单缓冲单缓冲:用了一个画布,将所有内容都先画到画布上,在整体绘制到窗口上,就该叫做单缓冲绘图,那个画布就是一个缓冲区。什么是双缓冲双缓存:用了两个画布,一个进行临时的绘图,一个进行最终的绘图,这样就叫做双缓冲绘图。自身就实现了双缓冲,通俗来讲就是有两个缓冲区,一个后台缓冲区和一个前台缓冲区,每次后台缓冲区接受数据,当填充完整后交换给前台缓冲,这样就保证了前台缓冲里的数据都是完整的。双缓冲在更新视图时用到了两张。原创 2024-08-10 16:28:16 · 221 阅读 · 0 评论 -
【Android面试八股文】你说你开发过IM通信SDK使用的编解码方案是TLV方案,能否展示说说你们怎么使用TLV编解码的?
Tips:每层嵌套都有2个或以上的字节增加(Tag和Length),一般通信双方可以按照协议对数据类型进行推定,所以大家可以根据实际需要,决定是否省略第三层的Tag和Length,即可通过配置文件或其它方式让程序了解字段的类型,从而降低数据包的大小,节省流量。描述Value部分所占字节的个数,编码格式分两类:定长方式(DefiniteForm)和不定长方式(IndefiniteForm),其中定长方式又包括短形式与长形式。这种方式使得可以在编码没有完全结束的情况下,可以先发送部分数据给对方。原创 2024-08-09 20:50:05 · 252 阅读 · 0 评论 -
【Android面试八股文】说一说Android开发模式之MVC、MVP、MVVM的区别?
MVC模式中,Activity同时承担了View和Controller的责任,代码相对简单,但可能导致Controller臃肿。MVP模式通过Presenter解耦了业务逻辑和视图,使得代码更易于维护和测试。MVVM模式使用ViewModel和LiveData实现了数据的双向绑定,代码更加简洁且易于测试,但引入了额外的复杂性。这三个模式各有优缺点,选择时应根据项目的需求来决定。原创 2024-08-09 20:05:56 · 284 阅读 · 0 评论 -
【Android面试八股文】荣耀面试算法题:扑克牌玩法,两人依次从中抽取,每次抽取1张牌,直到剩下的牌中,牌面点数不同,且从左到右按照从小到大排列时,游戏结束。判断每次先手抽牌的玩家是否有必胜的方法?
这个算法通过递归尝试每一种可能的牌面组合,并利用记忆化搜索避免重复计算,从而高效地判断先手玩家是否有必胜策略。DFS 遍历所有可能的牌面组合,而记忆化搜索则通过缓存已计算的结果来显著提高效率。原创 2024-07-21 00:21:59 · 279 阅读 · 0 评论 -
【Android面试八股文】荣耀面试算法题:输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵
由于方阵的旋转次数可能非常大(最大为10000次),我们可以简化问题,通过观察和计算,来减少不必要的计算步骤。要解决这个问题,我们需要实现一个功能,将给定的N阶方阵顺时针旋转M次。我们通过一个具体的示例来展示这段代码如何将一个矩阵顺时针旋转90度。(2) 接下来输入方阵的数据,输入N行,每行N个整数用空格分开。(1) 输出旋转后的数据,共计N行,每行N个整数,用空格分开。(1) 第一行输入一个正整数N (0<N<10)题目示例:三阶方阵,围绕方阵中心顺时针旋转。说明:不用考虑异常输入,所有输入都是正常的。原创 2024-07-20 23:18:25 · 296 阅读 · 0 评论 -
【Android面试八股文】1.使用了HTTPS就绝对安全了吗?2.HTTPS 会被抓包吗?3.如何避免被中间人抓取数据?
HTTPS是在 HTTP 的基础上加入加密层的协议,用于安全的数据传输。TCP 三次同步握手客户端验证服务器数字证书DH 算法协商对称加密算法的密钥、hash 算法的密钥SSL 安全加密隧道协商完成网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的 hash算法进行数据完整性保护,保证数据不被篡改。HTTPS 一定是安全的吗?用了HTTPS就安全了吗?HTTPS 会被抓包吗?网络面经:使用HTTPS就绝对安全了吗?原创 2024-07-16 01:16:46 · 766 阅读 · 0 评论 -
【Android面试八股文】1. 说一说Java四大引用有哪些? 2. 软引用和弱引用的区别是什么?
强引用是最常见的引用类型,它决定了对象的生命周期。软引用用来实现缓存,对内存敏感的对象,当内存不足时可以被回收。弱引用用来实现弱关联,当没有强引用指向对象时,即使有弱引用指向它,也可以被垃圾回收器回收。虚引用主要用来跟踪对象被回收的状态,在对象被回收时收到系统通知,用于执行一些必要的清理操作。这些引用类型提供了灵活的内存管理机制,可以根据实际需求选择合适的引用类型来优化程序的性能和内存使用。回收时机:软引用是在系统内存不足时才被回收,而弱引用则是在下一次垃圾回收时被回收。适用场景。原创 2024-07-15 23:17:41 · 1273 阅读 · 0 评论 -
【Android面试八股文】请描述一下 android 的系统架构?
Android 是一个基于 Linux 的开源软件堆栈,针对多种不同设备类型打造。下图显示了 Android 平台的主要组件。早期的Android架构如下图所示。原创 2024-07-14 23:16:13 · 859 阅读 · 0 评论 -
【Android面试八股文】Android 中如何捕获未捕获的异常?
在 Android 应用开发中,捕获未捕获的异常(Uncaught Exception)通常需要通过设置全局异常处理器来实现。这样可以在应用程序中的任何位置捕获到未被处理的异常,并进行相应的处理或记录。原创 2024-07-14 22:53:19 · 1405 阅读 · 0 评论 -
【Android面试八股文】你能说一说横竖屏切换时 Activity 的生命周期吗?
在 Android 应用程序中,当屏幕发生横竖屏切换时,Activity 的生命周期会经历一些变化,这对于开发者来说是很重要的,因为它涉及到如何处理 UI 和数据的变化。原创 2024-07-14 00:39:30 · 251 阅读 · 0 评论 -
【Android面试八股文】谈谈OkHttp框架的原理(深度剖析源码)
OkHttp是一个开源的网络请求框架,由Square公司开发和维护,用于在 Android 和 Java 应用中发送和接收HTTP请求。Google在Android4.4以后开始将源码中的底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。它提供了简单而强大的API,支持同步和异步请求,并在性能和可扩展性方面表现优秀。主要特性和优势:支持 HTTP/2 和 SPDY。原创 2024-07-13 23:25:56 · 801 阅读 · 0 评论 -
【Android面试八股文】在你之前的Android项目中,你是如何进行内存优化的?包括线下和线上如何监控?
内存问题是一个普遍问题,但是却普遍缺少关注度,具体有以下几个原因内存问题相对比较隐蔽,表现并不明显同时android使用Jvm语言开发,垃圾回收是自动的,所以一般没有特别关注内存问题难以定位,出现问题的地方往往只是表现的地方,真正的原因难以收集内存优化的内容其实非常多而复杂,我们可以尝试从以下思路去了解要了解内存问题,我们首先要了解为什么要做内存优化?同时需要了解一些内存优化的背景知识,如垃圾回收机制我们需要了解一些内存优化的常用工具与手段。原创 2024-07-13 20:25:25 · 234 阅读 · 0 评论 -
【Android面试八股文】项目中使用Glide框架出现内存溢出,应该是什么原因?
在使用 Glide 时,确保传递正确的上下文(Context),比如 Activity 或者 Fragment 的引用。即使 Glide 自身有内存缓存管理,但如果使用不当或者加载的图片过多过大,仍然可能会占用大量内存。:在使用 Glide 加载图片时,确保传递正确的上下文,避免在不合适的生命周期或上下文中加载图片。:确保只加载必要的图片,尽量避免一次性加载大量图片,可以通过分页加载或者滚动时加载来优化。:根据应用的需求配置 Glide 的内存缓存和磁盘缓存策略,避免内存占用过高。空白Fragment。原创 2024-07-13 18:32:50 · 254 阅读 · 0 评论 -
【Android面试八股文】谈谈你对Glide生命周期的理解
当使用 Glide 图片加载库时,关键的实现机制是通过来管理和监听与应用程序中 Activity 生命周期相关的操作。的创建和使用在应用中,每个实例都会关联一个,这个无 UI 的 Fragment 负责管理 Glide 请求和资源释放。获取或创建实例:通过的方法来获取现有的或创建新的实例。添加到 FragmentManager:如果不存在现有实例,会创建一个新的并将其添加到相应的中。的生命周期管理内部通过类来监听与其关联的 Activity 的生命周期变化。启动和停止请求:在onStart()和。原创 2024-07-13 18:22:43 · 130 阅读 · 0 评论 -
【Android面试八股文】谈谈你对Glide框架的缓存机制设计的理解
除了内存缓存,Glide还使用磁盘缓存来长期存储图像数据。磁盘缓存有助于避免每次应用启动时都重新下载图片,提升用户体验和节省网络带宽。磁盘缓存默认使用Android的来实现,它将图像数据存储在设备的持久存储中,例如内部存储或外部存储(SD卡)。当谈到自定义缓存时,我们通常指的是根据特定需求修改或扩展现有框架(如GlidePicasso等)的缓存行为,以优化应用程序的性能和用户体验。下面我会详细说明如何在使用Glide时实现自定义缓存。Glide默认使用LRU(最近最少使用)原创 2024-07-13 17:33:02 · 409 阅读 · 0 评论 -
【Android面试八股文】你说ARouter采用APT技术,那么谈一下你对APT技术的理解,还有那些框架是采用APT技术呀?JavaPoet
是一种在的技术,它允许开发者在时和Java 源代码中的注解信息,生成。APTJava 编译器语法分析语义分析生成字节码总体来说,APT 技术通过利用注解和处理器,能够在编译期间进行代码生成和静态检查,提高了代码质量和开发效率。然而,使用时需要权衡其优缺点,选择适合项目需求的解决方案。原创 2024-07-13 03:53:00 · 1532 阅读 · 0 评论 -
【Android面试八股文】能简单说一说组件化中ARouter的原理吗?
ARouter 是阿里巴巴开源的一款 Android 路由框架,用于帮助实现 Android 应用的组件化。在 ARouter 中,每个模块都会配置一个路由表,用来记录该模块中的页面信息以及页面间的跳转关系。这些信息通常以注解或配置文件的形式存在。在编译时,通过注解处理器(如arouter-compiler)和注解(如@Route),自动生成路由表。这些注解标记了Activity和其他组件的路径信息。原创 2024-07-13 03:24:08 · 208 阅读 · 0 评论 -
【Android面试八股文】组件化在项目中有什么意义?
早期的单一分层模式。原创 2024-07-13 03:00:00 · 871 阅读 · 0 评论