自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1069)
  • 收藏
  • 关注

原创 框架解析2-Retrofit

get方法返回的是CallAdapter接口的匿名实现类,其中adapter方法最终返回的ExecutorCallbackCall(executor, call)OkHttpCall.enqueue发起请求,获取response响应并完成数据解析。Retrofit是一个框架,它封装了网络请求功能,将网络请求的一整套流程都封装好了。该接口封装了所有需要发起的请求。

2024-04-10 13:52:19 765

原创 在onCreate post的message 与onResume究竟谁先执行

有一个朋友A在面试中被问到了这个问题,由于项目框架原因,很少与Activity打交道,今天我来一探究竟。

2024-04-10 13:46:17 228

原创 2024年学习Flutter有“钱”途吗?

学习并掌握Flutter的各种Widgets,包括基础Widgets(如Button、Text、Image等)和布局Widgets(如Row、Column、Stack等)。Flutter是谷歌于2017年创建的用户界面工具包,它是一个开源框架,提供完整的小部件、工具等包,可以用于开发各种应用程序,包括移动、web、桌面和嵌入式设备。Flutter的官方文档是一个很好的起点,其中包含了关于Flutter的详细介绍和教程。学习Flutter中的导航和路由机制,包括页面之间的跳转、传递参数等。

2024-04-10 13:39:34 1091

原创 Compose之主题

项目的theme文件中LightColorScheme/DarkColorScheme会给MaterialTheme的colorScheme重新赋值,若LightColorScheme/DarkColorScheme未定义surface和onSurface,则使用系统默认的颜色。Surface 的color 默认值是MaterialTheme.colorScheme.surface,contentColor的color 默认值是MaterialTheme.colorScheme.onSurface。

2024-04-08 14:12:09 382

原创 Android程序员心酸又励志!工龄二十年,但却被裁员!

希望大家无论什么时候都有从头再来的勇气,也有重新开始的能力,无论什么时候,要保持继续学习和向上的心。在这里为大家整理了一份面试资料,有需要的朋友可以扫描二维码,免费领取!

2024-04-08 14:08:14 414

原创 Chromium Video 是如何播放的

本文基于Android平台简单梳理了Chromium在打开一个视频资源时背后所发生的逻辑与源码调用流程。

2024-04-03 13:38:24 782

原创 ART虚拟机中的InlineCache

解释器在执行一条字节码时,需要获取一些隐含的信息作为该条字节码的输入,比如invoke指令需要知道方法的入口地址,或者需要知道对象某个字段的偏移地址。由于动态特性这些信息无法像C/C++那样在编译期就能确定,所以解释器的一个任务就是动态的解析出这些信息,这也是解释器性能无法达到机器码那么高效的一个原因。如果每次执行到同一条字节码时都去动态解析那些隐含的信息,那解释器花在动态解析上的时间可能是真正执行时间的数倍,这显然是不可接受的。到这里大家可能有个疑问,缓存是什么时候填充的呢?那具体的运行机制如何呢?

2024-04-03 11:43:16 217

原创 Android程序员的天敌是谁?

学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。,甚至能够自主查找并修复代码中的Bug。同时,Devin还能自行训练和微调自身的AI模型,实现智能化的持续优化升级。面对AI程序员的出现,我们能做的就是不断的创新,保持学习和自身的优势,不断提升自身的竞争能力,在面对挑战的同时也是在面对机遇。从某些程度上来说,Devin可能会取代一部分基层的程序员,也同时可以省掉中高级程序员的枯燥写代码过程。被淘汰的程序员,或许已经从事了和AI高度相关的工作,或者是其他一些AI无法取代的工作。

2024-04-03 11:39:47 1103

原创 Android 一种简单的线程阻塞检测方法

检测阻塞和卡顿本身就是开发需要注意的事项,另外关于VMStack,从Android 9 到Android 14版本依然在使用。不过它本身也是@hide类和方法,后续如何走向我们仍然需要注意,不过就目前为止,显然我们不用再去纠结native获取锁信息或者synchronized字节码插庄,直接使用java api就能实现。

2024-04-01 09:58:34 890

原创 为什么很少看到老Android程序员?

无论你是二十五岁,还是三十五岁,又或者是四十五岁。不必焦虑程序员这个身份,程序员不是吃青春饭的。作为程序员,无论哪个年龄阶段,我们只需要保持自身的竞争优势,在岗位上不断提升自己并且持续更新自己的知识库!无论您是刚刚开始学习Android开发,还是已经有一定经验的开发者,亦或是想要进阶和突破20~30K薪资范畴。学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈如果你没有方向,这里分享一份涵盖了从基本的Android开发到高级知识内容的《Android十大模块进阶笔记。

2024-04-01 09:55:21 557

原创 ThreadLocal

中的引用类型有四种,根据引用强度的由强到弱,分别是: 强引用、软引用、弱引用、虚引用;13、Android多媒体应用开发实战详解:图像、音频、视频、2D和3D-2。在线程生命周期内不会再次被访问,如果线程是复用的,那么该。14、Android高级UI开源框架进阶解密(1)无水印版。10、Android 音视频开发进阶指南-无水印(1)24、高级Android插件化强化实战(附源码)25、高级Android组件化强化实战(附源码)的初始值,此方法的第一次调用发生在,线程通过。

2024-03-30 13:57:20 940

原创 鸿蒙开发到底需要学什么?

想要成为鸿蒙工程师,到底该如何学习?在这里为大家准备了系统的整套鸿蒙学习资料,希望能帮助到大家全面的学习有需要的朋友可以扫描下方二维码,免费领取!

2024-03-30 13:51:51 1054

原创 一文快速实战Kotlin协程与Flow

不知道大家有没有跟我一样的感受:即使自己用心在网上学过协程和Flow了,但过了一段时间就又忘掉了。这大部分的原因其实是因为我们缺少实战。我平时工作里根本就接触不到协程和Flow,自己又不敢硬往上写,万一出问题了咋整?所以一直就处于理论学习阶段,导致我学了就跟没学一样。今天就带大家一起来解决这个问题,通过几个简单的Demo和实战,巩固我们Kotlin协程和Flow的知识体系,从而能更有信心地用到实际项目中去。

2024-03-28 14:57:56 725

原创 Android程序员真的会被AI(Devin)所取代吗

Devin等AI程序员的兴起并不意味着传统程序员将被完全取代,而是需要程序员具备更高的专业技能和创新能力。同时Devin也改变了程序员的工作方式,程序员需要手动编写代码,而Devin则可以通过学习和分析大量的数据和算法,自动生成代码。Devin的出现也催生出新的需求和岗位,例如对AI程序员的定制、配置、维护等工作,这为程序员提供了新的职业发展方向。在整个行业来说,Devin的诞生是极大的促进,可以告别繁琐的重复工作,人类工程师可以将更多的时间投入到创新和策略性任务中。另一方面,以Devin的能力,

2024-03-28 14:54:48 871

原创 大公司如何做 APP:背后的开发流程和技术

所谓他山之石,可以攻玉。在这篇文章中,我只是选取了几个自己印象深刻的技术点,零零碎碎地写了很多,比较散。对于有这方面需求的人,会有借鉴意义。如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁更多Android进阶资料1、《Android性能优化实战篇》2、《音视频精编源码解析》3、24种设计模式介绍与6大设计原则4、360°全方面性能调优5、2021最新版数据结构与算法面试题手册 16、2023年Android中高级最全面试真题答案解析。

2024-03-27 14:23:35 635

原创 大专毕业,我是如何从外卖员成为Android程序员的?

对于转行做程序员,我能成功靠什么?如果你下定决心,做了选择,就一定要坚持到最后。如今我已成功转行,现在在这个行业只算得上一个新人,但随着岁月增长,我会慢慢成为一名“老猿”,但我也会依然把自己这颗学习的心保持到老。同样的,我也希望你在青春迷茫时,能不要放弃,因为每个人,都有柳暗花明的那一刻。

2024-03-27 14:13:55 649

原创 Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解

在上一篇博文中介绍了一种轻量级的跨进程通讯方案-Messenger,Messenger实现起来非常简单,其底层原理也是AIDL,更像是一个简易版的AIDL,但简单的东西往往也有其局限性,Messenger的主要作用是传递消息,它无法实现RPC功能也就是无法让我们在客户端本地就能调用远程的方法,而且Messenger是以串行的方式处理,无法同时处理多个请求,只能一个一个的处理。而AIDL就可以很好弥补Messenger的不足,虽然实现起来相对复杂一些,但它功能强大,无疑是跨进程通讯的首选方案。

2024-02-20 07:45:00 1128

原创 Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身

在Android中进程间通信是比较难的一部分,同时又非常重要,针对进程间通信,博主会用四篇文章来介绍,本篇文章为IPC系列的开篇,主要介绍一些IPC中用到的一些概念、基础等,目的是让读者朋友们在学习IPC之前对一些必要的知识有一个大体的把握。在Android中进程间通讯的方式有很多种,在后续的三篇中会分别介绍每一种方式的实现过程已经各自的优缺点。

2024-02-20 07:00:00 650

原创 Android查缺补漏(线程篇)-- IntentService的源码浅析

在Android中有两个比较容易弄混的概念,Service和Thread,我们都知道这两个东西都可以执行后台任务,但要注意的是Service是跑在主线程中的,如果不做特殊处理是会阻塞主线程的,而IntentService正好弥补了这一点.本篇博文会将对IntentService的原理做一个简单的分析。

2024-02-05 08:15:00 508

原创 Android查缺补漏(线程篇)-- AsyncTask的使用及原理详细分析

在上面的源码中可知,最终getHandler()方法最终是为sHandler,而sHandler是一个静态的Handler对象,sHandler的作用是将执行环境切换到主线程中,所以这就要求sHandler要在主线程中被初始化,而由于静态成员会在类加载时被初始化,这就又要求了AsyncTask类必须在主线程中加载,否则该进程中的AsyncTask任务都无法正常工作。从上面源码我们可以看到,一个AsyncTask实例任务只能运行一次,只有是在PENDING状态下,任务才能正常运行,否则就会抛出异常。

2024-02-05 08:15:00 816

原创 3分钟搞定,学会Android滑动冲突解决技巧

如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁《Android十大板块文档》1.Android车载应用开发系统学习指南(附项目实战)2.Android Framework学习指南,助力成为系统级开发高手3.2023最新Android中高级面试题汇总+解析,告别零offer4.企业级Android音视频开发学习路线+项目实战(附源码)5.Android Jetpack从入门到精通,构建高质量UI界面6.Flutter技术解析与实战,跨平台首要之选。

2024-01-30 07:45:00 961

原创 Android大图监测的这三种实现方式,你最喜欢哪种?

如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁《Android十大板块文档》1.Android车载应用开发系统学习指南(附项目实战)2.Android Framework学习指南,助力成为系统级开发高手3.2023最新Android中高级面试题汇总+解析,告别零offer4.企业级Android音视频开发学习路线+项目实战(附源码)5.Android Jetpack从入门到精通,构建高质量UI界面6.Flutter技术解析与实战,跨平台首要之选。

2024-01-30 07:45:00 1753

原创 Android Lifecycle 深度解剖:三大类、五种状态、七大事件全面解读!

如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁《Android十大板块文档》1.Android车载应用开发系统学习指南(附项目实战)2.Android Framework学习指南,助力成为系统级开发高手3.2023最新Android中高级面试题汇总+解析,告别零offer4.企业级Android音视频开发学习路线+项目实战(附源码)5.Android Jetpack从入门到精通,构建高质量UI界面6.Flutter技术解析与实战,跨平台首要之选。

2024-01-19 08:30:00 820

原创 HarmonyOS NEXT开发体验的测试版本,纯血鸿蒙越来越近了

华为官方正式宣布鸿蒙生态千帆启航仪式将于1月18日在深圳举办,届时,将见证鸿蒙生态的新里程。在本次仪式上,备受期待的“纯血鸿蒙”——HarmonyOS NEXT开发者预览版有望公布最新进展。招募开启,一个实名账号具有 5 次机会,通过要求为 100 分(即满分)。HarmonyOS NEXT 开发者预览版是在正式版本发布前,为更全面地验证产品的功能以及保障产品的质量,在现网环境下招募真实的开发者参与开发体验的测试版本,面向一部分开发者,名额有限。

2024-01-19 08:00:00 615

原创 【Android】HttpURLConnection接口

如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁《Android十大板块文档》1.Android车载应用开发系统学习指南(附项目实战)2.Android Framework学习指南,助力成为系统级开发高手3.2023最新Android中高级面试题汇总+解析,告别零offer4.企业级Android音视频开发学习路线+项目实战(附源码)5.Android Jetpack从入门到精通,构建高质量UI界面6.Flutter技术解析与实战,跨平台首要之选。

2024-01-16 07:15:00 845

原创 Android framework很多人第一步都难踏出去,真有那么难吗

直到现在,“程序员”这个词在人们心中依然与“高工资”、“好找工作”等形容词紧密相连,这些传统观念早已深入人心。然而,令人始料未及的是,2023年的计算机行业并未如人们所想的那样充满希望,而现在2024刚刚开始也是很难预料后面的情况。对于从事计算机行业的人来说,特别是Android开发领域,经济下滑、公司大规模裁员的现象屡见不鲜。那些经验丰富的老程序员面临就业困境,而刚毕业或初入行业的新人则因缺乏经验、技术水平不足等原因难以找到工作。整个Android开发领域仿佛陷入了沉寂。

2024-01-16 07:15:00 1005

原创 整理2023全年Android面试题:从面试技巧到技术要点,全方位准备!

在当前的Android面试中,要考察的内容非常广泛,包括技术素养和面试技巧的多个方面。首先,对于技术素养的考察,深入理解和掌握Android开发的核心概念和基础知识是必不可少的。这包括但不限于对四大组件的深入理解,对Android系统架构和框架层源码的熟悉,以及对于数据存储、网络通信、性能优化等方面的知识。这些都是构建一个稳定、高效应用的基石,因此对于每一个Android开发者来说都是必须掌握的。其次,面试技巧也非常重要。

2024-01-10 07:30:00 444

原创 【Android笔记】Jetpack Compose

在compose中,Modifier提供了一系列函数,使用它们可以提供很多布局上的参数,比如padding等信息,通过自定义modifier来看下它是怎么工作的。通过扩展函数来扩展Modifier中的方法,因为modifier是链式调用的,我们扩展的方法也应该符合链式调用规则,Modifier.then方法用来辅助完成链式调用,它接受一个Modifier,返回一个与这个Modifier结合后的Modifier。

2024-01-10 07:15:00 848

原创 Android插件化浅析

这个方法内主要就是通过packageManager获取已经安装在手机里的应用程序列表,然后进行判断是否是我们主应用的插件,如果是的话,就将其应用程序名字和包名存入一个map集合中,然后添加到我创建的pluginList中,值得强调的一点是,如何确定是我们应用的插件呢?插件的图片id,都拿到了,最后给背景设置一下,就可以完成切换了,到这里,本篇博客就到此结束了,这里仅仅是我目前对于插件化一些理解,插件化还有很多需要深入研究的地方,等深入研究之后,会继续和大家进行分享。该方法可以通过包名来获取对应的上下文。

2023-12-30 08:00:00 1020

原创 强大的提示控件TextInputLayout使用以及源码分析

这里出现了一个mCollapsingTextHelper,通过它可以设置文字大小的加速动画,FAST_OUT_SLOW_IN_INTERPOLATOR,快出慢进的效果,还有设置位置的加速器setPositionInterpolator,setCollapsedTextGravity设置折叠文字的Gravity,看来这个mCollapsingTextHelper的作用还是很强大的,我们后面再看它的源码,先继续往下看。说明在源码中必定有添加这个提示的逻辑,这里我们后面在讨论,先继续往下看。

2023-12-30 07:15:00 803

原创 轻量级控件SnackBar使用以及源码分析

Snackbar的布局里面果然是使用了这个布局,如果我们要改变布局的样式,我们就修改这个文件里面的相关属性就可以了,就比如这里的textAppearance。在这里面最重要的一句就是渲染了一个R.layout.design_layout_snackbar的布局,很明显这个布局是系统自带的,很明显在这里已经写死了,所以我们想修改这个SnackBar显然是不行的,而且它还强转成了SnackbarLayout布局,我们可以查看一下这个布局的代码,这个布局在design包的layout下。

2023-12-15 07:45:00 988

原创 Material Design系列探究之LinearLayoutCompat

beginning,middle,end属性值分别指明将在何处添加分割线。到这里,所有的LinearLayoutCompat的源码分析,就结束了,为什么要看分割线绘制的源码,因为在很多控件中并没有分割线,我们可以通过学习谷歌的源码,仿照着进行分割线的绘制,比如recyclerView就没有分割线,但我们可以自己写一个分割线,对于 recyclerView分割线设置,有很多大神的博客都有描述,这里就不在赘述了,以后的博文会陆续给大家带来Material Design其他控件的博客。

2023-12-15 07:45:00 937

原创 Android插件化浅析

这个方法内主要就是通过packageManager获取已经安装在手机里的应用程序列表,然后进行判断是否是我们主应用的插件,如果是的话,就将其应用程序名字和包名存入一个map集合中,然后添加到我创建的pluginList中,值得强调的一点是,如何确定是我们应用的插件呢?插件的图片id,都拿到了,最后给背景设置一下,就可以完成切换了,到这里,本篇博客就到此结束了,这里仅仅是我目前对于插件化一些理解,插件化还有很多需要深入研究的地方,等深入研究之后,会继续和大家进行分享。该方法可以通过包名来获取对应的上下文。

2023-12-01 14:36:53 152

原创 强大的提示控件TextInputLayout使用以及源码分析

这里出现了一个mCollapsingTextHelper,通过它可以设置文字大小的加速动画,FAST_OUT_SLOW_IN_INTERPOLATOR,快出慢进的效果,还有设置位置的加速器setPositionInterpolator,setCollapsedTextGravity设置折叠文字的Gravity,看来这个mCollapsingTextHelper的作用还是很强大的,我们后面再看它的源码,先继续往下看。说明在源码中必定有添加这个提示的逻辑,这里我们后面在讨论,先继续往下看。

2023-12-01 07:30:00 821

原创 Android数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析

对于随机数据,插入排序速度是冒泡排序的二倍,比选择排序也要快一点,而对于基本有序的数据来说插入排序表现则要出色的多,因为基本有序的数据排序时,while 循环的条件大部分情况下都不成立,这样基本就相当于只执行了外层的一层循环,某些理想情况下插入排序的时间复杂度可以达到 O(N),但通常情况下,插入平均时间复杂度为:O(N^2)。此时,这组数的最后一个数一定是最大的了,然后进行下一轮如此比较到倒数第二个数,再下一轮比较到倒数第三个,如此循环,直到有一轮比较到第二个数结束,最终这一组数就是有序的了。

2023-10-07 07:00:00 231

原创 关于Android性能优化的几点建议

如果你看到了这里,觉得文章写得不错就给个赞呗?更多Android进阶指南 可以扫码 解锁《Android十大板块文档》1.Android车载应用开发系统学习指南(附项目实战)2.Android Framework学习指南,助力成为系统级开发高手3.2023最新Android中高级面试题汇总+解析,告别零offer4.企业级Android音视频开发学习路线+项目实战(附源码)5.Android Jetpack从入门到精通,构建高质量UI界面6.Flutter技术解析与实战,跨平台首要之选。

2023-09-26 07:00:00 285

原创 「冲刺金九银十」Android开发最全面试攻略,6大专题全面提升

为了帮助有需要的有需要的人,在这里我将分享这份**《2023年Android中高级最全面试真题答案 》**里面包含了Java方面、Android方面、音视频开发高频面试题、Flutter高频面试题、算法高频面试题、Andrio Framework方面等6个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份 PDF 拿下众多大厂的 offer,今天在这里总结分享给到大家!要想在激烈的竞争中脱颖而出,除了具备扎实的技术功底,还需要具备足够的职业素养和责任感,才能在这个领域取得长足发展。

2023-09-09 07:00:00 73

原创 Android开发必知--几种不同对话框的实现

在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的。在看具体实例之前先对AlertDialog做一个简单介绍。AlertDialog是功能最丰富、实践应用最广的对话框,它可以生成各种内容的对话框。但实际上AlertDialog生成的对话框总体可分为以下4个区域:图标区、标题区、内容区、按钮区。一般创建一个对话框需要经过以下几步:1、创建AlertDialog.Builder对象。

2023-09-01 07:00:00 240

原创 SharedPreferences 存List集合,模拟数据库,随时存取

PS:SharedPreferences只要稍微学过一点就会用,他本身通过创建一个Editor对象,来存储提交,而editor可以存的格式为他里面可以存一个SetHashSet是Java中非常常用的数据结构对象,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key。这里有hashset百度百科,不懂的可以看看https://baike.baidu.com/item/HashSet/8887897?fr=aladdin。

2023-07-19 07:00:00 181

原创 用shape画内圆外方,形成一个圆形头像

很多人都有过这样的经历,想要在自己写的程序里,上传一张随便大小形状的照片在程序里显示都是圆形照片,或者是方形,或者是三角形,但是写代码又非常麻烦,这里就有一个也可以实现一样效果的方法,那就是用layer-list画。

2023-07-05 06:30:00 181

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除