自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夏夏的博客

BUG尚未修复,同志仍需努力

  • 博客(140)
  • 收藏
  • 关注

原创 阿里巴巴2023年最新Android面试题(内部资料,限时领取)

记得我以前刚开始面试Android的时候,非常好奇人家公司面试官会问一些什么样的问题?会有哪些侧重点?而我个人的话又该准备哪些知识点呢?我会在网上搜,一搜出来一大片,但是仔细翻阅发现大部分是一些比较基础的Android题目,且都比较碎片化,很难帮助我们系统复习和吸收。每一个岗位面试的体验都是不一样的,所有公司的Feature也是不一样的,甚至是每一个面试官带给你的Freestyle也是不一样的!因此,我根据自己多年的开发和面试经验,总结出了一份超级全面的Android面试题。

2023-01-31 19:47:31 15

原创 Flutter 组件集录 | 3.7 新增 - ContextMenu 菜单

Context 菜单算是对弹出框的一个特性支持,特别对于桌面端来说,让右键弹出工具框的处理更加简便。比如下方所示,是 AndroidStudio 中右键时弹出的工具:严格来说,不是一个单独的组件,而是一个弹出浮层菜单项小体系。对于移动端来说,输入框 TextFiled 组件长按文字时弹出的工具菜单也属于一种 ContextMenu :从本质上来说 ContextMenu 也不是什么新东西,只不过是对Overlay浮层的一层封装而已。通过控制器方便地添加和移除浮层。

2023-01-29 14:05:12 24

原创 2023年,Android开发程序员未来职业发展规划

2023年,是我从事Android开发的第10年,也是我加入35岁中年危机大军的一年。在我的10年工作生涯中,不止一次思考过自己的职业规划和未来的职业发展方向。关于国内程序员 35 岁以后的出路,网络上已经有很多讨论了,不外乎以下几条:

2023-01-28 21:45:28 39

原创 Android进阶宝典 -- CameraX与Camera2的使用比对

相机,作为手机最重要的一个多媒体工具,被应用于众多app软件中,如果整个项目中涉及到拍照、直播、录视频、扫码,那么相机就必须要用到。传统的相机app,一般使用到Camera或者Camera2比较多,但是Google的JectPack框架中引入了CameraX组件作为官方推荐相机架构,既然推出此框架,那么一定是有它自身的优势之处在的,本文将会从CameraX和Camera2的框架机制出发,分析两者的不同以及性能差异。

2023-01-27 09:00:00 24

原创 ViewModel中的StateFlow和SharedFlow,使用建议以及单元测试

以读取数据库数据为例,Repository负责从数据库读取相应数据并返回一个flow,在ViewModel收集这个flow中的数据并更新状态(StateFlow),在MVVM模型中,ViewModel中暴露出来的StateFlow应该是UI层中唯一的可信数据来源,注意是唯一,这点跟使用LiveData的时候不同。很简单,将之转换成热流就好了!关于在UI层收集ViewModel层的热流方式,官方文档已经有介绍,但是没有补充在JetPack Compose中的收集流方式,下面补充一下。

2023-01-26 19:51:10 14

原创 so加载 - Linker跟NameSpace知识 (上篇)

so库的加载可是我们日常开发都会用到的,因此系统也提供了非常方便的api给我们进行调用```System.loadLibrary(xxxso);```当然,随着版本的变化,loadLibrary也是出现了非常大的变化,最重要的是分水岭是androidN加入了**namespace**机制,可能很多人都是一头雾水噢!这是个啥?我们在动态so加载方案中,会频繁出现这个名词,同时还有一个高频的词就是**Linker**,本期不涉及复杂的技术方案,我们就来深入聊聊,Linker的概念,与namespac

2023-01-16 10:42:11 24

原创 从入门到熟悉,Android开发应该如何高效学习?

Android开发最近是非常热门的,如果要学好也不是一天两天的事情,需要积累的。一下是几点入门的建议:* 想要进行Android App的开发,首先需要学会它的开发语言也就Java,当然只要掌握一些基础就行了,如果要学精通估计要较长时间。会看API就好了;* 开发工具很多公司都是用Eclipse+SDK来开发的,所以建议使用这个组合;* 接下来就是看一些相关的参考或者视频教程,要边看边做。

2023-01-13 14:22:28 26

原创 Android百大框架源码解析,这一篇文章讲透彻了!

行业对于Android开发程序员的要求逐渐变高,面试官通常会对各种框架的源码刨根问题,从而来判断应试者的业务能力边际所在。客观的说,没有参与过源码项目、研究过源码框架的程序员,80%以上都过不了。

2023-01-11 15:37:50 28

原创 LockSupport实现原理

前文中了解到AQS借助LockSupport.park和LockSupport.unpark完成线程的阻塞和唤醒,那么LockSupport内部又是怎么实现的?这是一个什么类?

2023-01-11 11:05:01 19

原创 2023年最新大厂Android中高级面试题大全(含答案解析)

临近春节,许多伙伴都想趁现在冲刺刷题,为年后的跳槽做准备。但想要斩获高薪offer,面试这一关是需要好好下功夫的,其中关键的一环就是吃透大厂面试真题,建立面试的把握和自信。这里给大家分享一份BAT内部整合的,涵盖,各大技术重点、面试难点、进阶要点全面覆盖。帮助大家建立一个系统的知识支撑体系,使自己具备扎实的Android基础和进阶学习能力,同时过硬的技术和较强的项目架构能力。

2023-01-07 17:38:19 53

原创 Xcode 搭建FFmpeg开发环境

首先我是一个Android 开发工程师,最近在做音视频开发的学习,对于必学框架API-FFmpeg,所涉及的语言都是C语言或者C++语言,在Mac 电脑上,FFmpeg 的学习更加方便。

2023-01-06 14:10:09 34

原创 将Android进行到底之服务(service)

我们都知道,字节最近发布了PICO4VR眼镜,我买了一个,体验还行。因为我也是做VR眼镜的Android应用层开发的,所以想把自己项目中遇到的一些Android技术分享给读者。近些年随着VR眼镜的兴起,Android的的服务(Service)和广播(Broadcast)以及内容提供者(Content Provider)越来越被重用,相反Activity这个曾经很吃香的组件在VR眼镜的开发过程中却用的不多。本节我会介绍Android的服务在VR眼镜中的使用,服务(Service)是Android的四大组件之一

2023-01-03 16:17:39 22

原创 Android jetpack compose官方开发应用指南,2023最新

Compose 使得在程序员在构建界面时,无需在像之前那么构建 XML 布局,只需要调用 Jetpack Compose 函数来声明你想要的的元素,Compose 编译器就会自动帮你完成后面的工作,这使得编写和维护界面变得更加容易,程序员的开发效率也变得更高。在刷了大量视频和文档后,我对 Compose 也有了更深一层的认知,于是我参考官方教程和大牛解读,亲身总结而出一份《Android Jetpack Compose开发应用指南》,希望可以帮助大家快速掌握Compose,打造更出色的应用!

2022-12-30 19:59:05 36

原创 业务架构的救世主是 MVI(一)

该系列的前三篇结合“搜索”这个业务场景,讲述了不使用架构写业务代码会产生的痛点:

2022-12-30 14:30:34 17

原创 国外大厂面试题, 7 个 Android Lifecycle 重要的知识点

习惯性的每天都会打开 medium 看一下技术相关的内容,偶然看到一位大佬分享和 `Android Lifecycle` 相关的面试题,觉得非常的有价值。在 Android 开发中 `Android Lifecycle` 是非常重要的知识点。但是不幸的是,我发现很多新的 Android 开发对 `Android Lifecycle` 不是很了解,导致在开发中遇到很多奇怪的问题。分享这些面试题,不仅仅是为了通过面试,更是为了让 Android 开发者基础更加的扎实,防止在开发中遇到很多奇怪的问题。

2022-12-28 14:52:24 42

原创 初学者必备,最新《Android开发源码解析》,助你高效阅读、快速入门

对于Android初学者而言,阅读源码的难度非常高,刚开始读源码难免一头雾水,这都是很正常的情况,因为有很多5年以上的开发人员对源码的接触都不多。这篇文章就来浅析一下如何有效阅读Android源码,及阅读哪些有效的源码?

2022-12-26 22:06:20 20

原创 升级 Android 目标版本到 31(S) 居然这么多坑

我之前从 29 升级到 30 那次改动已经非常大了。这次应该不会太多改动,没想到总归还是 `too young too simple, sometimes naive`. 升级目标版本到 31 也不是那么简单。下面是谷歌官方提供的两个文章,分别详细列举了升级到版本的变更以及升级到 Android 12 的详细的变更:

2022-12-26 14:49:09 58

原创 组件化开发必备:Gradle 依赖切换源码的实践

上述是开发过程中替换依赖为源码的“无痕”修改方式。不论在组件化还是非组件化需要开发中都是一种非常实用的开发技巧。按照上述开发开发方式,我们可以既能开发 android-mvvm-and-architecture 的时候随时随地打开 AndroidUtils 进行修改,亦可对 AndroidUtil 这个工程独立编译和开发。源代码参考项目(当前是 feature-3.0 分支)的 AppShell 下面的文件。作者:开发者如是说。

2022-12-15 14:03:12 69

原创 阿里Android开发源码精编内核解析,阅读源码不再是难题

阅读源码是个枯燥的过程,是件短期内低回报的事情。但所谓滴水石穿,只要持之以恒,坚持一段时间之后,所获得的最终成就便是巨大的。了解项目代码是参与(开源)项目的第一步,希望这篇文章能帮助你提高源码阅读与理解的能力,快速提升自我技术水平和编程功力,参与到心仪的项目中去。

2022-12-13 22:00:39 19

原创 HashMap中keySet和entrySet的区别

今天进行CR的时候,发现代码中对HashMap进行遍历时,使用的是for(key in map.keys),就想起了之前看到的一个文章,说使用entrySet()进行遍历性能更高。当时没有追究,但是最近看《代码整洁之道》,学到了

2022-12-10 20:05:34 39

原创 Android车载开发指南,一线互联网大厂最新整理发布,速来领取

如今,移动互联网的热潮退去,Android开发工程师的岗位由原来的香饽饽变得可替代性越来越强。大多Android工程师会选择两条路,要么坚持深耕,要么转行其他领域。目前Android相关的领域方向非常繁多,一些行业刚刚兴起,能否壮大起来,热度又能持续多久都尚未可知。其中,关于车载开发的讨论度非常之高,车载就业前景广、技术逐渐成熟。相信不久的将来,车载系统将脱离手机,内置的原生系统也能获得更好的体验。

2022-12-08 17:06:38 37

原创 Jetpack Compose - LayoutModifier (十二)

由上图可知,我们传递进去的layout的lamda 他的返回值 必须得是 MeasureResult 这个接口类型的对象可以看下这个接口, 他有宽高这2个我们熟悉的参数,还有 alignmentlines 这个有点像文字绘制时候的baseline的概念, 先跳过 不处理, 另外还有一个placeChildren的函数, 这个函数的作用 前面也提到过了,就是摆放自己的位置 ,这4个要素缺一不可,

2022-12-06 10:32:43 20

原创 Android Framework究竟值不值得你死磕?

刚刚踏入Android开发领域的程序员通常会经历三个阶段:第一阶段:熟悉Android基础架构与基本工具,掌握java基础编程知识;第二阶段:对所需要维护模块的代码逐渐熟悉起来,形成了自己的代码风格和代码思维;第三阶段:熟知Android整体架构,对方案设计的优劣有自己的认识,并且能提出更好的改进方案。在第三阶段,我们其实已完全适应了业务,走进了舒适圈,然而这也是最危险的时期。因为在温水煮青蛙的模式下工作,。。因此,深挖原理、精进技术是成为架构师、突破薪资范畴的必经之路。

2022-12-02 21:38:46 64

原创 Flutter桌面开发 - windows插件开发

我们都知道,Flutter的定位更多是作为一个跨平台的UI框架,对于原生平台的功能,开发过程中经常需要插件来提供。不幸的是Windows的生态又极其不完整,插件开发必不可少。但网上windows的文章少之又少,所以本篇文章,我们一起来聊聊插件开发的一些技巧。Flutter的插件主要分两种:package和plugin。Package是纯dart代码的库,不涉及原生平台的代码;Plugin是原生插件库,是一种特殊的Package。Plugin需要开发者分别在各原生平台实现对应的能力。

2022-11-30 16:44:45 288

原创 最新Android 性能优化项目实战,一线互联网大厂开发项目合集

由于 Android 设备内存有限,特别是一些配置比较低的手机在运行较大的 Java 程序时有时候由于内存不够用的,会出现 OOM 和 ANR 等情况,严重影响用户的使用。此时,就需要通过布局优化、内存优化、线程优化等方式来减少上述情况的发生,让应用更流畅、更稳定、更省电省空间。一款应用的问世只是开始,后期不断的性能优化,才是提升用户体验,让APP拥有更高市场竞争力的根本因素之一。通过情况下,性能优化的优先级较低,但当应用程序 App 的用户体量达到一定规模时,性能优化会变得异常重要。

2022-11-28 20:56:35 101

原创 扒一扒 Jetpack Compose 实现原理

Compose 是 Google 推出的现代化 UI 开发工具包,基于声明式 UI 开发风格,加上 @Composable 函数帮助开发者有效的实现关注点分离,另外 Compose 内部最大程度优化了重组范围,可以帮助我们高效的刷新UI,考虑到 Compose 整体架构设计过于复杂,这篇文章主要带大家了解 Compose Runtime 层核心的实现逻辑。

2022-11-25 09:51:42 87

原创 Android Kotlin基础学习手册——入门指南+强化实战

Kotlin 是由 JetBrains 设计开发的一种在 Java 虚拟机上运行的静态类型编程语言,其是Google用来替代Java的语言,被称之为 Android 世界的Swift。现在将Kotlin已成为了Android的官方语言,越来越多的项目开始使用Kotlin。Kotlin凭借其代码简洁高效、Android Jetpack 与其他库中的 Kotlin 支持、可与 Java 的一起使用、空指针安全等优势,深受许多开发人员的喜爱。

2022-11-23 17:15:46 50

原创 Flutter【绘制】制作一个掘金Logo组件

为了巩固下Flutter绘制的相关知识,今天我们就用Flutter路径从头开始制作封装一个掘金的`logo`组件, 掘金的`logo`看起来很简单,但是其中还是涉及到了很多绘制以及三角函数的知识的。

2022-11-21 09:37:32 59

原创 读完大牛出品的300篇文章,我总结出了一份Flutter入门教程

作为原生开发,我这几年一直会关注Flutter,越关注,就越好会发现Flutter的简单强大。看完全网300篇业界大牛的文章,我总结出了一份,非常适合Android中高级开发人员。文章通过篇为大家打牢基础,尤其是变量声明、数据类型、判断和循环条件等知识,在学习时也可以对照自己正在使用的编程语言的学习路径,事半功倍;篇则包含混合工程、业务架构、数据统计、企业实战案例等内容,帮助大家提升进阶。

2022-11-17 17:27:12 54

原创 Flow是如何解决背压问题的

随着时间的推移,越来越多的主流应用已经开始全面拥抱Kotlin,协程的引入,Flow的诞生,给予了开发很多便捷,作为协程与响应式编程结合的流式处理框架,一方面它简单的数据转换与操作符,没有繁琐的操作符处理,广受大部分开发的青睐,另一方面它并没有响应式编程带来的背压问题的困扰;接下来,本文将会就Flow如何解决背压问题进行探讨。

2022-11-15 09:19:55 60

原创 Android转车载难不难?一文揭秘Android车载操作系统开发

我们知道,如今车载系统中对娱乐、应用生态有需求的中控和副驾一般由Android系统控制,Android Automotive 则是一个基于 Android 平台扩展后,适用于现代汽车的智能操作系统,可以直接运行为Android系统开发的应用。不过Android Automotive与Android相比,增加了对汽车的特定要求、功能和技术的支持,。同时,,大多数Android工程师对车载系统中Security、SOA、AutoSAR等相关的模块并不熟悉,

2022-11-11 14:19:28 275

原创 由浅入深、详解Android中Drawable的那些事

对于 `Drawable` ,一直没有专门记录,日常开发中,也是属于忘记了再搜一下。主要是使用程度有限(仅仅只是`shape`或者 `layer` 等冰山一角),另一方面是 `Android` 对其的高度抽象,导致从没去关注过细节,从而对于 `Drawable` 没有真正的理解其设计与存在的意义。反而是偶尔一次发现其他同学的运用,才明白了自己的狭隘,为此,怀着无比惭愧的心情,写下此篇,与君共勉。鉴于此,本篇将完整的描述开发中常见各种 `Drawable` ,以及在工程化项目的背景下,如何更好的运用。

2022-11-09 14:01:44 95

原创 Android音视频开发成长之路——腾讯架构师整理,音视频知识总结

随着5G时代的到来,音视频慢慢在人们的日常生活中开始扮演越来越重要的角色,音视频领域由小众变为大众,相关的人才也开始成为香饽饽。音视频的就业方向主要有直播、传输、算法、视频播放器、流媒体后端、短视频、音频播放、视频编辑、图像处理等。就业前景非常广。其次,从下方招聘网站上的截图来看,音视频开发人员的薪资比一般开发者要高20%左右。目前音视频岗位热度与薪资水平还在持续升高,可以说音视频是时下最热门的开发者从业方向之一。

2022-11-07 21:12:16 62

原创 Android硬编解码利器MediaCodec解析——从猪肉餐馆的故事讲起(一)

前面视频理论基础几篇篇文章已经比较详细地介绍了H264编辑码基本原理以及码流的基本结构,其中并未叙述具体编解码算法,因为对于一般的工程类开发来说,这些知识已经足矣,算法那是专门做算法的人员需要研究的。而对于一般开发来说,已经有成熟的工具来处理编解码了,其中,MediaCodec就是Android平台中专门处理音视频硬编硬解码的利器。

2022-11-04 14:00:50 167

原创 【全套】Android零基础入门教程(知识精讲+强化实战)

在目前的IT行业中,Android开发相关的人才需求量依旧不减,尤其是高级的Android架构师是非常吃香的。关于安卓如何学习,如何get正确的学习姿势?这篇文章主要分享的是安卓开发的基础内容和学习路线,帮助想要入门Android的伙伴们打牢基础,快速入门

2022-11-02 21:39:51 220

原创 Compose 动画艺术探索之动画规格

可以看到 `AnimationSpec` 是一个接口,它用来存储动画规格,包括要进行动画处理的数据类型、将数据转换为动画后将使用的动画配置。`Compose` 为我们实现了常用的一些动画规格,先来看下思维导图吧:

2022-10-30 14:42:34 61

原创 Android 音视频开发进阶指南(音视频基础、FFmpeg解码、项目实战...)

早在数年前,互联网巨头们就纷纷在音视频方向上布局,大量投资项目,吸纳技术人才...由于音视频技术学习不易、高端人才缺乏,音视频开发人员的薪资水平也随之水涨船高。一名优秀的音视频开发人员,年薪普遍都在30w-50w的水平。音视频技术学起来并不容易,知识体系较大,而网上成体系化的资料也较少,许多想转行音视频的人也苦于提升无门。

2022-10-28 15:49:25 157

原创 腾讯性能监控框架Matrix源码分析(三)TracePlugin 初探

TracePlugin 卡顿分析插件 他可以监听以下情况* 监控ANR、* 界面流畅性、* 启动耗时、* 页面切换耗时、* 慢函数及卡顿等这是Matrix最核心的插件之一,原理的实现细节非常值得我们研究学习,其中涉及到很多底层知识handler、编舞者,反射 绘制原理、anr监控原理等等,学会他可以让你的安卓基础更上一层楼

2022-10-26 13:42:31 170

原创 【收藏向】谷歌技术团队出品,Android开发入门教程,开源分享

程序员圈子中,python、java等都是热门领域,网络上相关学习资源也比较多,相较之下Android的学习资料就比较少了,并且大多是碎片化的知识,不够系统和全面。今天就来整理一下Android开发的系统学习资料,希望能给到初学者一些参考,也给已经入门的人一些进阶建议,让知识体系更加系统化。

2022-10-24 17:53:17 94

原创 Flutter 工程化框架选择 — 混合开发的摸爬滚打

这是 《Flutter 工程化框架选择》 系列的第四篇 ,就像之前说的,这个系列只是单纯告诉你,创建一个 Flutter 工程,或者说搭建一个 Flutter 工程脚手架,应该如何快速选择适合自己的功能模块,可以说这是一个指引系列,所以比较适合新手同学。在 Flutter 里进行混合开发一直都是“痛点”,其中最主要的原因就是:Flutter 有自己独立的渲染引擎,因为 Flutter 控件渲染脱离了平台控件的 render tree,这也造成了 Flutter 在混合开发上的实现相对复杂了不少。事实上在 F

2022-10-21 10:26:36 90

空空如也

空空如也

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

TA关注的人

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