我的Android进阶之旅
文章平均质量分 86
1. 本专栏已有500+篇博客,还在持续更新中。。。
2. 本专栏已有700+读者订阅,还在持续订阅中。。。
3. 本专栏价格会根据运营平台政策调整而波动,价格会持续上涨,越早买越便宜!
4. 本专栏涵盖内容涉及Android各种知识点:Kotlin、Java、C++、ASM、OpenGL渲染等
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
字节卷动
字节卷动 | CSDN博客专家
博客知识包括:Android、ASM、OpenGL、C++、Java、Python、Shell、Jenkins、Gitlab、Git、SVN等相关进阶知识。
展开
-
【Android面试八股文】1.使用了HTTPS就绝对安全了吗?2.HTTPS 会被抓包吗?3.如何避免被中间人抓取数据?
HTTPS是在 HTTP 的基础上加入加密层的协议,用于安全的数据传输。TCP 三次同步握手客户端验证服务器数字证书DH 算法协商对称加密算法的密钥、hash 算法的密钥SSL 安全加密隧道协商完成网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的 hash算法进行数据完整性保护,保证数据不被篡改。HTTPS 一定是安全的吗?用了HTTPS就安全了吗?HTTPS 会被抓包吗?网络面经:使用HTTPS就绝对安全了吗?原创 2024-07-16 01:16:46 · 357 阅读 · 0 评论 -
【Android面试八股文】1. 说一说Java四大引用有哪些? 2. 软引用和弱引用的区别是什么?
强引用是最常见的引用类型,它决定了对象的生命周期。软引用用来实现缓存,对内存敏感的对象,当内存不足时可以被回收。弱引用用来实现弱关联,当没有强引用指向对象时,即使有弱引用指向它,也可以被垃圾回收器回收。虚引用主要用来跟踪对象被回收的状态,在对象被回收时收到系统通知,用于执行一些必要的清理操作。这些引用类型提供了灵活的内存管理机制,可以根据实际需求选择合适的引用类型来优化程序的性能和内存使用。回收时机:软引用是在系统内存不足时才被回收,而弱引用则是在下一次垃圾回收时被回收。适用场景。原创 2024-07-15 23:17:41 · 336 阅读 · 0 评论 -
【Android面试八股文】谈谈OkHttp框架的原理(深度剖析源码)
OkHttp是一个开源的网络请求框架,由Square公司开发和维护,用于在 Android 和 Java 应用中发送和接收HTTP请求。Google在Android4.4以后开始将源码中的底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。它提供了简单而强大的API,支持同步和异步请求,并在性能和可扩展性方面表现优秀。主要特性和优势:支持 HTTP/2 和 SPDY。原创 2024-07-13 23:25:56 · 399 阅读 · 0 评论 -
【Android面试八股文】谈谈你对Glide框架的缓存机制设计的理解
除了内存缓存,Glide还使用磁盘缓存来长期存储图像数据。磁盘缓存有助于避免每次应用启动时都重新下载图片,提升用户体验和节省网络带宽。磁盘缓存默认使用Android的来实现,它将图像数据存储在设备的持久存储中,例如内部存储或外部存储(SD卡)。当谈到自定义缓存时,我们通常指的是根据特定需求修改或扩展现有框架(如GlidePicasso等)的缓存行为,以优化应用程序的性能和用户体验。下面我会详细说明如何在使用Glide时实现自定义缓存。Glide默认使用LRU(最近最少使用)原创 2024-07-13 17:33:02 · 248 阅读 · 0 评论 -
【Android面试八股文】你说ARouter采用APT技术,那么谈一下你对APT技术的理解,还有那些框架是采用APT技术呀?JavaPoet
是一种在的技术,它允许开发者在时和Java 源代码中的注解信息,生成。APTJava 编译器语法分析语义分析生成字节码总体来说,APT 技术通过利用注解和处理器,能够在编译期间进行代码生成和静态检查,提高了代码质量和开发效率。然而,使用时需要权衡其优缺点,选择适合项目需求的解决方案。原创 2024-07-13 03:53:00 · 1366 阅读 · 0 评论 -
【Android面试八股文】SharedPreference原理,commit与apply的区别是什么?使用时需要有哪些注意?SharedPreference的性能有什么优化方案:MMVK?
是 Android 提供的一种轻量级的数据存储方式,用于存储应用程序的配置信息或者一些简单的用户偏好设置。它基于键值对的方式存储数据,并且数据是持久化的,即使应用关闭后数据依然存在。的数据存储在XML文件中,每个应用都有自己的存储目录,路径一般为下的XML文件。每个XML文件对应一个实例。保存的文件为XML数据,其内容如下原创 2024-07-13 01:58:56 · 985 阅读 · 0 评论 -
【Android面试八股文】Android性能优化面试题:怎样检测函数执行是否卡顿?
卡顿一、可重现的卡顿二、不可重现的卡顿第一种方案: 基于 Looper 的监控方法第二种方案:基于 Choreographer 的监控方法第三种方案:字节码插桩方式第四种方案: 使用 JVMTI 监听函数进入与退出总结相关大厂的方案ArgusAPMBlockCanaryQQ空间卡慢组件Matrix微信广研参考文档原创 2024-07-04 22:46:42 · 433 阅读 · 0 评论 -
【Android面试八股文】你是怎么保证Android设备的时间与服务器时间同步的?(使用NTP和TrueTime方案)
一、网络时间协议(NTP)二、使用网络时间协议(NTP)2.1 使用系统提供的 NTP 服务器2.2 使用TrueTime2.2.1 引入TrueTime库2.2.2 初始化 TrueTime2.2.3 用法2.2.4 使用 TrueTime 获取时间2.2.4 自动更新时间2.2.5 注意事项二. 使用 HTTP 请求获取服务器时间2.1. 发送 HTTP 请求获取服务器时间2.2. 在 Android 应用中发送 HTTP 请求2.2.1 使用HttpURLConnection原创 2024-07-04 21:56:15 · 252 阅读 · 0 评论 -
【Android面试八股文】App对内存是如何限制的?应该如何合理使用内存?
一、内存管理概览二、垃圾回收三、共享内存四、分配与回收应用内存五、限制应用内存六、切换应用七、进程间的内存分配八、内存类型九、物理内存 虚拟内存9.1 物理内存9.2 虚拟内存9.3 虚拟内存的好处9.4 共享库内存十、VSS RSS PSS USS区别十一、Android系统的页面置换11.1 内存页面十二、内存不足管理12.1 内核交换守护进程12.2 低内存终止守护进程12.2.1 onTrimMemory()12.2.2 onLowMemory()十三、计算原创 2024-07-02 22:13:38 · 83 阅读 · 0 评论 -
【Android面试八股文】你知道什么是冷启动和热启动吗?你知道应用冷启动的全流程吗?你知道如何解决启动时候的黑白屏问题?
解决Android应用程序启动时出现的黑白屏问题通常涉及到优化启动流程和加载过程中的UI显示。冷启动是指用户第一次启动一个应用程序时的启动流程。这个流程涵盖了从应用启动图标点击到界面显示的整个过程,每一步都是确保应用正常启动并且用户能够看到期望界面的关键步骤。通过以上方法,可以有效减少Android应用程序启动时的黑白屏问题,提升用户体验和应用启动的视觉流畅度。在Android开发中,原创 2024-07-02 01:26:17 · 51 阅读 · 0 评论 -
【Android面试八股文】在你之前的Android项目中,你是如何进行性能优化的?
这些方法和策略通常会根据具体的项目需求和应用场景进行调整和优化,帮助提升Android应用的性能和用户体验。在之前的Android项目中,优化和提升性能是一个重要且常见的任务。原创 2024-07-02 01:05:59 · 68 阅读 · 0 评论 -
【Android面试八股文】你说你使用Leakcanary进行内存泄漏检测,那你能说一说Leakcanary的原理吗?
带你读懂 Reference 和 ReferenceQueue一步步拆解 LeakCanary深入理解Leakcanary源码LeakCanary中文使用说明LeakCanary:让内存泄漏无所遁形深入理解 Android 之 LeakCanary 源码解析。原创 2024-07-01 23:08:14 · 302 阅读 · 0 评论 -
【Android面试八股文】性能优化相关面试题:如何查找CPU占用?
开发工具中的一个性能分析工具,用于帮助开发者分析和优化应用程序的性能。就会有以下的界面,注意看下面标注的四个步骤。原创 2024-07-01 01:21:21 · 268 阅读 · 0 评论 -
【Android面试八股文】性能优化相关面试题:Android中一张图片100x100在内存中的大小?
在Android开发中,理解图片的文件大小和加载到内存中后的实际占用大小之间的区别至关重要:- **文件大小**:指的是图片在磁盘上存储的实际大小,通常以 KB 或 MB 为单位。这个大小受图片格式(如PNG、JPEG等)和压缩算法的影响。 - **内存占用**:当图片被加载到应用程序的内存中时,它们会被解码为位图(Bitmap)对象。位图的内存占用取决于图片的分辨率和每个像素点的位深度。原创 2024-06-30 23:33:10 · 24 阅读 · 0 评论 -
【Android面试八股文】如何判断一个APP在前台还是后台?有哪几种方法?
虽然通过查询运行中的进程来判断应用的前后台状态是一种早期的实现方式,但由于系统安全性和效率的考虑,现在更推荐使用或来监控应用的生命周期和内存状态变化。这些方法更加直接、高效,并且在更高版本的 Android 上仍然可靠。原创 2024-06-30 18:17:53 · 39 阅读 · 0 评论 -
【Android面试八股文】Fragment的add和replace的区别,分别对Fragment的生命周期有什么影响?
replace方法:直接替换当前容器中的 Fragment,适用于完全切换视图内容的情况。replace方法并添加到返回栈:在替换的同时将原 Fragment 添加到返回栈,可以支持返回操作。hide和add方法结合:保留 FragmentA 的状态,仅在需要切换时显示或隐藏,适用于需要快速切换视图的情况。add和remove方法结合:完全移除原 Fragment 并添加新的 Fragment,适用于需要精确控制添加和移除过程的情况。原创 2024-06-30 17:59:07 · 162 阅读 · 0 评论 -
【Android面试八股文】1. 说一说BroadcastReciver广播的两种基本类型 2. BroadcastReciver的静态注册和动态注册的区别是什么?
1. BroadcastReceiver 广播的两种基本类型1.1 标准广播(Normal Broadcast)1.2. 有序广播(Ordered Broadcast)1.3 总结2. BroadcastReceiver 的静态注册和动态注册的区别2.1 静态注册2.2 动态注册2.3 选择注册方式的考虑因素3. 总结原创 2024-06-30 02:47:18 · 26 阅读 · 0 评论 -
【Android面试八股文】1. 请你说一下ContentProvider是什么?使用场景是什么? 2. 请你描述一下如何自定义ContentProvider?
要自定义一个定义数据库架构:确定你的数据模型和 SQLite 数据库的结构。继承 ContentProvider 类:创建一个类并继承类,实现必要的方法。实现 ContentProvider 方法onCreate():在此方法中进行初始化工作,例如创建数据库或者初始化其他必要的资源。query():处理查询请求,返回符合条件的数据。insert():处理插入新数据的请求。update():处理更新数据的请求。delete():处理删除数据的请求。getType():返回请求数据的 MIME 类型。原创 2024-06-30 02:19:20 · 15 阅读 · 0 评论 -
【Android面试八股文】你在项目开发过程中,IntentService与Service用过吗,理解他们两者区别吗?
IntentService的设计使得开发者能够简化异步任务的管理,它自动处理线程的创建和销毁、Intent的传递和顺序处理。这些特性使得IntentService特别适合于处理后台任务,如下载文件、上传数据、处理通知等,能够帮助开发者有效地管理后台任务的执行顺序和生命周期。原创 2024-06-30 01:57:19 · 162 阅读 · 0 评论 -
【Android面试八股文】Android组件内核面试题:Activity的4大启动模式,与开发中需要注意的问题,如onNewIntent() 的调用
一. Android启动模式详解1.1 Standard 标准模式1.2 SingleTop 栈顶复用模式1.3 SingleTask 栈内复用模式1.4. SingleInstance 单实例模式二、启动模式的使用方法2.1 在 Manifest.xml中指定Activity启动模式2.2 启动Activity时,在Intent中指定启动模式去创建Activity三、 Activity 的 Flags1. FLAG_ACTIVITY_NEW_TASK2. FLAG_ACTIVITY_S原创 2024-06-29 00:18:59 · 11 阅读 · 0 评论 -
【Android面试八股文】Android组件内核面试题:Acitvity的生命周期,如何摧毁一个Activity? (美团面试题)
待Activity处于Resume状态时,ActivityThread会调用该函数。当Activity进入Pause的状态后,会通过Binder回调到。之后,开始启动Activity销毁以及结果返回的流程。通知AMS开始销毁当前Activity,并且携带参数。如果Pause完毕之后,则开始处理Stop的流程。该函数主要用来完成销毁当前Activity。当用户进程处于空闲状态时,就会回调。当Pausing完毕后,会执行。中移除,如果不是的话,则调用。而在该接口中,就会调用。,如果是的话,则直接把。原创 2024-06-28 23:40:33 · 13 阅读 · 0 评论 -
【Android面试八股文】WindowMangerService中token到底是什么?token的存在意义是什么?
首先我们看到报错是在,这个地方肯定有进行token判断,然后才抛出异常,这样我们就能寻找到token...int res;........./** 注释1*/");.........我们可以快速看出在注释1的地方抛出了异常,是根据一个变量res来判别的,这个res出自方法,那么token的判别肯定在这个方法里面了,res只是一个 判别的结果,那么我们是必须进入这个里去看一下。的类型是,他是一个接口,那他的实现类在哪里?找不到实现类就无法知道他的实际代码。这里涉及到window。原创 2024-06-28 23:19:18 · 85 阅读 · 0 评论 -
【Android面试八股文】为什么Dialog不能用Application的Context?
这也是Android框架设计的一个限制,确保界面元素的正确管理和显示。:窗口管理服务,负责窗口的启动、添加和删除,并管理窗口的大小和层级。是窗口的意思,对应屏幕上的一块显示区域,它的实现类是。的生命周期,可能会引起内存泄漏和崩溃等问题。之间的管理接口,管理窗口顺序和消息等。令牌,用于唯一标识系统中的一个窗口。:窗口令牌,是一种特殊的。来展示,而这个窗口环境只有。的生命周期依赖于其父。下面的示例代码演示了使用。和正确的生命周期管理。的实例,是应用窗口类型。运行后是可以获得的。服务的话,会得到一个。原创 2024-06-28 18:34:28 · 64 阅读 · 0 评论 -
【Android面试八股文】如何通过WindowManager添加Window?
个系统正式统一开发者使用悬浮窗的类型窗口,属于系统窗口。参数,这个参数决定了窗口的类型,这里我们定义成一。而言,获取到的其实是一个封装过的代理对象,一个。,另外就是布局相关的熟悉,其中最关键的一点。服务的代理对象,不过对于。的各种属性,他们决定了。原创 2024-06-28 18:00:15 · 102 阅读 · 0 评论 -
【Android面试八股文】如何优化二维码的扫描速度?
是一款基于OpenCV引擎的高效微信二维码识别库,它的设计灵感来源于微信的二维码扫描机制。该项目不仅提供了二维码识别功能,还具备完整的扫码界面,让用户能够轻松地集成到自己的Android应用中,实现类似微信的扫码体验。包含多个模块,满足不同开发需求,如基本的识别库、完整的扫码界面等。原创 2024-06-28 03:05:52 · 66 阅读 · 0 评论 -
【Android面试八股文】你能说一说Zygote进程的启动流程吗?
zygote进程是由init进程启动的,init进程通过解读init.rc文件的方式启动了zygote,但是zygote所涉及的内容非常多,我们需要一步一步的分析它的细节。原创 2024-06-28 00:12:48 · 16 阅读 · 0 评论 -
【Android面试八股文】 Looper 为什么要使用死循环?Looper.loop会不会阻塞主线程?Looper无限循环的阻塞会不会导致主线程ANR?
一、 Looper 为什么要使用死循环?1.1 进程1.2 线程1.3 ActivityThread1.4 总结二、 Looper.loop会不会阻塞主线程?2.1 概述2.2 nativePollOnce2.3 `nativePollOnce` 的底层逻辑2.4 Android中为什么主线程不会因为Looper.loop()里的死循环卡死?2.5 总结三、Looper无限循环的阻塞会不会导致主线程ANR?3.1 ANR3.1.1 什么是ANR3.1.1 发生ANR的主要四种情况原创 2024-06-27 20:45:31 · 330 阅读 · 0 评论 -
【Android面试八股文】说一说Handler的sendMessage和postDelay的区别?
发送对象不同发送的是Message对象,可以包含更多数据和信息。发送的是Runnable对象,表示一个要执行的任务。使用场景不同适合需要传递数据并进行复杂消息处理的场景。适合直接执行任务,尤其是那些无需传递复杂数据的场景。方法签名不同系列方法包括等。系列方法包括等。原创 2024-06-27 03:13:17 · 68 阅读 · 0 评论 -
【Android面试八股文】Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?原创 2024-06-27 02:50:21 · 108 阅读 · 0 评论 -
【Android面试八股文】Framework面试:AIDL 的全称是什么?如何工作?能处理哪些类型的数据?
AIDL 的全称是,即 Android 接口定义语言。它是一种专门用于描述 Android 应用程序组件之间接口的语言,主要用于在不同的进程间进行通信。编译器可以通过aidl文件生成一段代码,生成的代码封装了binder,可以当成是binder的延伸。原创 2024-06-27 00:25:23 · 33 阅读 · 0 评论 -
【Android面试八股文】Framework面试:描述下Binder机制原理?
Binder是Android提供的一套进程间相互通信框架,它是一种效率更高、更安全的基于C/S架构的IPC通信机制,其本质也是调用系统底层的内存共享实现。它基于开源的OpenBinder实现,从字面上来解释Binder有胶水、粘合剂的意思,顾名思义就是粘和不同的进程,使之实现通信。原创 2024-06-26 23:01:08 · 115 阅读 · 0 评论 -
【Android面试八股文】Framework面试:Android中多进程通信的方式有哪些?
Android是在Linux内核基础之上运行,因此Linux中存在的IPC机制在Android管道: 在创建时分配一个page大小的内存,缓存区大小比较有限;信号: 不适用于信息交换,更适用于进程中断控制,比如非法内存访问,杀死某个进程等;信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;原创 2024-06-26 22:12:29 · 57 阅读 · 0 评论 -
【Android八股文】如何对ListView & RecycleView进行局部刷新的?
Android ListView优化之局部刷新(更新)(非notifyDataSetChanged)这三种方法的核心就是找出你要更新Item的,然后再去操作。因为ListView默认只会加载一屏的数据,所以要判断其可见范围。不可见的在滑动的时候getView会自动调用更新数据。最后要强调的一点就是关于布局优化,最好将item的高度设置为一个固定的值,这样能减少getView的调用次数。因为一个不确定的值,ListView会频繁调用多次getView去确定其高度和渲染。原创 2024-06-26 01:43:01 · 204 阅读 · 0 评论 -
【Android面试八股文】说一说ListView卡顿的原因以及相对应的优化策略
数据绑定逻辑过多的话,首先是区分出与界面有关的逻辑计算和与界面无关的逻辑计算,与界面有关的逻辑计算只能通过优化算法逻辑、数据结构处理,与界面无关的逻辑计算不影响界面的显示可以开线程用于计算。简单的设置以及一些简单的计算是不会消耗很多的时间的,如果是包含大量的控件属性设置、数据遍历、转化的话时间就会成倍的增长,最终可能就会导致ListView的卡顿。必须以极短的时间完成数据绑定和图片加载刷新,但图片的加载是需要耗费较大的性能和时间的,频繁的图片加载会延缓Item的数据绑定过程,容易造成卡顿。原创 2024-06-25 23:19:40 · 239 阅读 · 0 评论 -
【Android面试八股文】如何实现Activity窗口快速变暗
在Android中实现Activity窗口快速变暗有几种方法,其中一种简单且常用的方法是使用WindowManager.LayoutParams来动态调整窗口的亮度。通过改变窗口的透明度,你可以实现活动窗口快速变暗的效果。原创 2024-06-25 18:52:27 · 93 阅读 · 0 评论 -
【Android面试八股文】WebView与 JS 交互方式有哪几种?
Android去调用JS的代码JS去调用Android的代码二者沟通的桥梁是WebView本文主要对Android通过WebView与JS的交互方式进行了全面介绍。原创 2024-06-25 18:29:43 · 20 阅读 · 0 评论 -
【Android面试八股文】WebView如何做资源缓存的?
H5页面加载速度慢的原因:渲染速度慢 & 页面资源加载缓慢 导致。综上所述,产生性能问题主要原因是:上述问题导致了的H5页面体验 与 原生Native存在较大差距。缓存,即离线存储这意味着H5网页 加载后会存储在缓存区域,在无网络连接时也可访问WebView的本质 = 在Android中嵌入H5页面,所以,自带的缓存机制其实就是H5页面的缓存机制除了新的缓存机制还不支持,其他都支持。原创 2024-06-25 02:46:58 · 274 阅读 · 0 评论 -
【Android面试八股文】你知道动画插值器(Interpolator)吗?
是用于控制动画变化速率的一个接口或类。插值器通过使用不同类型的插值器,我们可以实现各种各样的动画效果,比如线性运动、加速运动、减速运动等。在Android中,插值器被用来定义动画在其持续时间内的变化速率,即给定动画当前所处的时间点,计算出动画的进度百分比。原创 2024-06-25 01:17:54 · 86 阅读 · 0 评论 -
【Android面试八股文】你能说一说Android动画的分类和区别吗?
视图动画(View Animation):简单易用,但只能做视觉效果的变化,不改变实际属性,适用于简单动画。属性动画(Property Animation):功能强大,能改变对象的实际属性,适用于复杂动画和交互。帧动画(Drawable Animation):通过显示图片序列实现动画,适用于需要逐帧动画效果的场景。根据具体需求选择合适的动画类型,可以更好地实现所需的动画效果。原创 2024-06-24 23:43:51 · 147 阅读 · 0 评论 -
【Android面试八股文】你能说一说事件分发机制中的责任链模式吗?
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许多个对象依次处理请求,直到其中一个对象处理该请求为止。每个对象都包含对下一个对象的引用,这样请求可以沿着链传递,直到有对象处理它或到达链的末端。这个模式主要目的是避免请求的发送者与接收者耦合在一起,使多个对象都有机会处理该请求,从而灵活应对各种处理需求。原创 2024-06-23 23:31:05 · 17 阅读 · 0 评论