自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android 开发架构

热爱技术,热爱分享,加油,孤独的编程人

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

原创 作为一个Android程序员,精通音视频开发,寒冬再冷也冻不到你

前言:如今音视频的知识纷繁复杂,自己学习非常困难,既需要非常扎实的基础知识,又需要有很多的工程经验;而音视频从业者基本上有两个层面:一个层面是搞音视频算法,这类人非常少,需要有深的数学能力和算法背景,这类人一般都会选择去大公司,薪水百万是最low 的。另一个层面是搞工程,这类人相对较多,他们有扎实的理论基础,很强的技术功底,对音频、视频都非常熟悉。这些人工资要比一般开发者高20%左右;随着5G时代的到来,音视频慢慢变成人们日常生活中的必须品。所以,现在有大量的公司开始寻找音视频人才,一个稍好点的音视频人

2020-12-02 15:27:59 4048 20

原创 2020下半年,最接地气的字节跳动Android面经分享(已收offer)

摘要:开篇之前,首先说一下,博主曾经也只是尘世间一个迷途小开发,二流程序员。可能这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+总结,最终拿到了自己喜欢公司offer(字节跳动Android开发岗,薪资也涨了40%多,对我来说已经很满意了)的故事。出来社会摸爬滚打三年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。说下我的个人背景吧:双非本科,计算机专业。工作三年,都是小厂,小组最多没超过4个人

2020-11-27 20:00:07 3049 9

原创 抱歉,年后劝各位真的考虑清楚了再跳槽.......

从Linux系统层、Android系统服务层到Zygote进程模型的启动过程。

2024-02-27 07:45:00 1772

原创 Android自定义方框EditText注册验证码

大体的思路,点击事件之后弹出一个Dialog,然后再这个页面进行注册,有可能这个Dialog会复用,或者改一些样式(采用Builder设计模式)]5.Android Jetpack从入门到精通,构建高质量UI界面。4.企业级Android音视频开发学习路线+项目实战(附源码)1.Android车载应用开发系统学习指南(附项目实战)8.高级Android插件化与组件化(含实战教程和源码)10.Android零基础入门到精通,高手进阶之路。自定义的EditText到这了算是结束了。接下来自定义Dialog。

2024-02-27 07:45:00 311

原创 Android init 启动

创建子进程,子进程终止后,如果父进程不知道子进程已经终止的话,这时子进程虽然已经退出,但是在系统进程表中还为它保留了一些信息(如进程号、运行时间、退出状态等),这个子进程就是所谓的僵尸进程。其中系统进程表是一项有限的资源,如果它被僵尸进程耗尽的话,系统可能会无法创建新的进程。需要注意的是,这些文件只是在应用运行的时候存在,一旦应用运行结束就会随着应用一起消失。进程是所有用户空间进程的父进程,当其子进程终止时产生。文件语法是以行尾单位,以空格间隔的语法,以。的名称都是唯一的,对于重复的命名视为无效。

2024-02-21 07:00:00 800

原创 30%程序员担心失业,底层开发成“香饽饽”?

从Linux系统层、Android系统服务层到Zygote进程模型的启动过程。

2024-02-21 07:00:00 930

原创 备战“金三银四”求职季,你是不是正在为Android大厂的面试而头疼?

去年“金九银十”求职季,找工作的人特别多,但好工作却不多。无论是刚毕业的大学生还是已经有10年工作经验的老Android程序员,都觉得找工作特别难。竞争非常激烈,每个人都想尽全力拿到一个好工作。作为一个有15年Android经验的老程序员,我也感觉压力山大。我投了100多份简历,每次都差点被淘汰。为了准备面试,我复习了近1000道Android面试题,拿到offer那天还在刷题,真的是快崩溃了。

2024-02-16 11:04:41 454

原创 Android | View.post 到底是在什么时候执行的?

相信绝大部分人都使用过view.post这个方法,且使用场景基本上都是用来获取view的一些属性数据,并且我们也都知道,该方法会使用handler发送一个消息,并且该消息被回调执行的时候view 是已经绘制完成的,今天我们来聊一聊它内部的一些细节。通过上面的分析,其实这个逻辑本身还是非常简单的,但是需要你提前了解 View 的添加流程以及绘制流程和Handler ,了解这些你再去看这个源码就会非常简单。更多Android进阶指南 可以扫码 解锁《Android十大板块文档》

2024-02-16 10:58:40 805

原创 Android自定义倒计时按钮

本文实例为大家分享了Android自定义倒计时按钮的具体代码,供大家参考,具体内容如下。2.Android Framework学习指南,助力成为系统级开发高手。5.Android Jetpack从入门到精通,构建高质量UI界面。4.企业级Android音视频开发学习路线+项目实战(附源码)1.Android车载应用开发系统学习指南(附项目实战)8.高级Android插件化与组件化(含实战教程和源码)10.Android零基础入门到精通,高手进阶之路。7.Kotlin从入门到实战,全方面提升架构基础。

2024-02-09 08:15:00 362

原创 普通公司的程序员跟BAT大公司的程序员差在哪里

有时,小厂在能够填补我们对于经济上的匮乏,又有时,选择了大厂会让我们以为未来的发展无忧。但我们从始至终的目的都是从小厂到大厂,在大厂不断学习成为高级开发。相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。

2024-02-09 07:45:00 805

原创 Android自定义倒计时按钮

本文实例为大家分享了Android自定义倒计时按钮的具体代码,供大家参考,具体内容如下。2.Android Framework学习指南,助力成为系统级开发高手。5.Android Jetpack从入门到精通,构建高质量UI界面。4.企业级Android音视频开发学习路线+项目实战(附源码)1.Android车载应用开发系统学习指南(附项目实战)8.高级Android插件化与组件化(含实战教程和源码)10.Android零基础入门到精通,高手进阶之路。7.Kotlin从入门到实战,全方面提升架构基础。

2024-02-05 11:03:35 368

原创 android如何加载长图

但是我们仅仅显示了指定区域,而且是较小的一部分区域,如果想要完整预览整张图片该如何处理呢?由于我们不需要对Bitmap的的位置重新摆放,所以不许要重写onLayout方法,但是自定义View要绘制一张图片该怎么办?首先设置Bitmap的复用,然后根据指定区域以及Options来解码一张图片,最后通过Canvas绘制到View中。上面说到我们通过Rect指定显示区域,那通过改变要显示的区域位置不就可以完成整张图片的加载了?显示图片的某一块区域,那么至少需要两个方法:1、设置图片,2、设置显示区域。

2024-02-01 07:00:00 762

原创 Android APP开发怎么样?还能继续吗?

开头也说了,Android APP开发现在不怎么样,还想做下去,去搞点有深度的。这里给大家分享一份《Android Framework源码开发揭秘》由于文档内容过多,因此为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的看文末有免费的获取方式!(文末还有使用ChatGPT机器人小福利哦!!大家不要错过)《Android Framework源码开发揭秘》

2024-02-01 07:00:00 928

原创 Android App瘦身新姿势——Android App Bundle

Android App Bundle是Google最新推出的Apk动态打包,动态组件化的技术,与Instant App不同,AAB是借助Split Apk完成动态加载,使用AAB动态下发方式,可以大幅度减少应用体积。在这里插入图片描述从这个动态图中,我们就可以大概知道了App Bundle的原理是什么,App Bundle将这些特性在多个维度进行拆分,在资源维度,ABI维度和Language维度进行了拆分,你只要按需组装你的Apk然后安装即可。

2024-01-26 08:00:00 856

原创 HarmonyOS自动化测试框架—Hypium

Hypium”是“Hyper Automation + ium”的组合词,“Hyper Automation”表示超级自动化, “ium”意指稳定、可靠的测试框架能力底座。从取名含义可以看出,我们想要为开发者打造一个以超级自动化测试为理想目标、且稳定可靠的测试框架。自动化测试框架Hypium以插件形式集成到DevEco Studio中。开发者创建工程后,DevEco Studio会自动生成测试目录、测试类和测试用例模板等,如图1所示。开发者无需从零开始,让测试更加简单、高效。

2024-01-26 07:15:00 862

原创 HarmonyOS(鸿蒙)开发学习,看着一篇就够够了

这两天和朋友谈到未来的IT行业趋势,HarmonyOS(鸿蒙)绝对能占一席之地的,无论是成未来发展还是目前的薪资待遇来看,鸿蒙开发是最值得去选择的。这几年IT市场已经饱和了,就以Android为例子,大量的人才涌入Android,导致整个市场供需关系崩坏,很多Android开发人员被迫转行寻找其他出路,虽然一直以来高级开发都是稀缺人才,但是有多少人能成为那一少部分人。而现在鸿蒙打开了一个新的缺口,而且在短时间这个缺口将一直都在,这个时间如果错过,未来说不准又会陷入IT怪圈了。

2024-01-22 08:30:00 540

原创 HarmonyOS振动效果开发指导

Vibrator 属于控制类小器件,主要包含以下四个模块:Vibrator API,Vibrator Framework,Vibrator Service 和 HDF 层。当设备需要设置不同的振动效果时,可以调用 Vibrator 模块,例如:设备的按键可以设置不同强度和不同时长的振动,闹钟和来电可以设置不同强度和时长的单次或周期振动。● Vibrator API:提供振动器基础的 API,主要包含振动器的列表查询,振动器的振动器效果查询,触发/关闭振动器等接口。● HDF 层:适配不同设备。

2024-01-22 08:15:00 899

原创 HarmonyOS-Hypium框架使能ArkTS应用高效测试

想必大家对自动化测试框架Hypium并不陌生,此前有关于Hypium的详细介绍《HarmonyOS自动化测试框架—Hypium》,大家可自行查阅。下面,我们一起了解Hypium测试框架,主要涵盖三个维度:1、测试执行调度层xDevice支持手机、平板、PC、穿戴、智慧屏、音箱和车机等多设备,助力应用跨设备测试验证。2、测试框架层涵盖HTSUnit、HUITest、HCUnit与HCPPTest多层次测试框架,从应用的单元/接口层、到UI界面层、再到C/C++系统层,构建多维度测试服务保障。

2024-01-17 07:45:00 876

原创 2024的开端,Android小伙伴找到方向了吗?

很多人感触2023是是最不平凡的一年尤其是从铜三铁四之后,找工作是越来越难了,投出去的简历都是已读不回。但是各位有没有想过就可能还是一如既往的难,伴随着互联网行业寒冬的到来,各大企业都不敢大肆招聘,都是选择收缩发展,这种趋势估计一下子是缓不过来的,加上程序员内部越来越卷,要求会越来越高了。要想在IT行业继续发展进阶拿高薪的话,提升自己是必不可少的。

2024-01-17 07:15:00 950

原创 Android图片加载开源库深度推荐,安利Fresco1、Universal-Image-Loader 2、Picasso 3、Glide 4、Fresco

这里没有广告,这里没有跑分,数据对比Google一下比比皆是,额···那我说什么好(ノಠ益ಠ)ノ彡┻━┻。挺好的啊~这·····因为某次我要把通过图片URL拿本地缓存的时候,我居然找不到同步获取的方法(ノಠ益ಠ)ノ彡┻━┻,除了异步的回调之外,我居然找不到····而且听说Fresco对GIF和webp支持更好,不,我不管,我要换女朋友。功能与丁丁大名的PhotoView一样,支持双击放大,单击返回,手动放大与缩小等,无缝接入Fresco,哎哟喂,不错哟。10.Android零基础入门到精通,高手进阶之路。

2024-01-11 07:45:00 773

原创 Android Framework源码解析,看这一篇就够了

通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组件的运行原理,例如Binder的运行机制、ServiceManager的作用等等。所以我们还是要了解一下Android系统的组成,以及Android Framework的层次架构。最熟悉最常用的业务层。

2024-01-11 06:30:00 926

原创 Flutter完整开发实战详解(四、 Redux、主题、国际化)

这里也为想要学习Flutter的朋友们准备了两份学习资料《Flutter Dart语言编程入门到精通》《Flutter实战》,从编程语言到项目实战,一条龙服务!!

2023-12-28 08:30:00 825

原创 Flutter完整开发实战详解(三、 打包与填坑篇)

这里也为想要学习Flutter的朋友们准备了两份学习资料《Flutter Dart语言编程入门到精通》《Flutter实战》,从编程语言到项目实战,一条龙服务!!

2023-12-28 08:00:00 1019

原创 Flutter完整开发实战详解(一、Dart语言和Flutter基础)

在如今的 Fultter 大潮下,本系列是让你看完会安心的文章。本系列将完整讲述:如何快速从0开发一个完整的 Flutter APP,配套高完成度 Flutter 开源项目。同时也会提供一些Flutter的开发细节技巧,并针对开发过程中可能遇到的问题进行填坑。

2023-12-19 07:45:00 868

原创 Flutter完整开发实战详解(二、 快速开发实战篇)

本篇内容结构如下图,主要分为:基础控件、数据模块、其他功能三部分。每大块中的小模块,除了涉及的功能实现外,对于实现过程中笔者遇到的问题,会一并展开阐述。本系列的最终目的是:**让你感受 Flutter 的愉悦!**那么就让我们愉悦的往下开始吧!(◐‿◑)我是简陋的下图。

2023-12-19 07:45:00 882

原创 Android查缺补漏(View篇)--自定义 View 中 wrap_content 无效的解决方案

做过自定义 View 的童鞋都会发现,直接继承 View 的自定义控件需要重写 onMeasure() 方法,并设置 wrap_content 时的自身大小,否则在布局文件中对自定义控件在设置大小时,wrap_content 将等同于 match_parent。其实在 Android 中自带的控件中,也都对 onMeasure() 方法进行了重写,对于 wrap_content 等情况做了特殊处理,在 wrap_content 时给出了默认的宽、高。@Override。

2023-12-06 07:15:00 467

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

在Android中有两个比较容易弄混的概念,Service和Thread,我们都知道这两个东西都可以执行后台任务,但要注意的是Service是跑在主线程中的,如果不做特殊处理是会阻塞主线程的,而IntentService正好弥补了这一点,在Android查缺补漏–Service和这篇博文中已经简单介绍过了IntentService的基本用法,本篇博文会将对IntentService的原理做一个简单的分析。10.Android零基础入门到精通,高手进阶之路。7.Kotlin从入门到实战,全方面提升架构基础。

2023-12-06 07:15:00 852

原创 在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0?

无论您是刚刚开始学习Android开发,还是已经有一定经验的开发者,亦或是想要进阶和突破20~30K薪资范畴。学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈如果你没有方向,这里分享一份涵盖了从基本的Android开发到高级知识内容的《Android十大模块进阶笔记》,包括车载开发、UI设计,Android Framework底层原理等方面。这份学习笔记不仅深入浅出,而且非常实用,让大家系统而高效地掌握Android开发的各个知识点。

2023-11-30 07:45:00 351

原创 快 30 岁的程序员,技术很一般,我是去考公还是努力提升技术?

尤其是快 30 岁的程序员,技术很一般,很多人开始考虑考公或者转行。

2023-11-30 07:15:00 452

原创 Android性能优化系列之App启动优化

2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。对于应用的启动时间,只能是尽量的避免一些耗时的、非必要的操作在主线程中,这样相对可以缩减一部分启动的耗时,另外一方面在等待第一帧显示的时间里,可以加入一些配置以增加体验,比如加入Activity的background,这个背景会在显示第一帧前提前显示在界面上。给人刷新不同步感觉。

2023-11-13 07:30:00 61

原创 都2023年了,不会还有Android开发不研究Framework源码

Android系统是一个庞大而复杂的系统,其Framework只是对系统的一个封装,涉及到虚拟机、、指令集等多个方面。因此,阅读源码需要有,否则可能会迷失在细节和繁琐之中,无法全面理解整个系统。要有效地阅读源码,我们需要抓住主线和支线。主线指的是Android系统的各个模块,如等。支线则是每个模块从上到下各个层级中的重要元素,例如在框架层中,我们需要关注Activity、Service、BroadcastReceiver等重要组件的运作流程。

2023-11-13 07:30:00 147

原创 Android性能优化系列之apk瘦身

相对于多套资源,只使用720P的一套资源,在视觉上差别不大,很多大公司的产品也是如此,但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量了。对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的),所以apk的瘦身优化也很重要,本篇博客将讲述apk瘦身的相关内容。插件化技术支持动态的加载代码和动态的加载资源,把APP的一部分分离出来了,对于业务庞大的项目来说非常有用,极大的分解了APP大小。更人性化是该查找结果可以“一键删除”。

2023-11-08 07:45:00 72

原创 让你易上手的Jetpack Compose教程

Jetpack Compose是Android开发团队推出的一种新型UI构建工具,它基于Kotlin语言,采用声明性的语法,使得UI构建更加简单、直观。与传统的XML布局不同,Jetpack Compose使用代码来描述UI,开发者可以直接在代码中设置UI元素的属性,而无需使用XML进行配置。到这里,你已经掌握了Jetpack Compose的基本用法。Jetpack Compose不仅提供了丰富的组件和布局供你使用,还支持自定义组件和样式表等高级特性。

2023-11-08 07:30:00 182

原创 找到自身的定位,应对接下来的Android面试

有些程序员自认自己在面试时薪资谈判时觉得自己要求很低,但还是被淘汰了,因此想不通原因,这都是因为对自身的技能层级认知不够清晰,进行了错误的判断。下面我给大家讲解下关于Android开发者的四个层级区别,面试前对自己有一个清晰的认知也是很重要的。在软件开发领域,尤其是Android开发领域,开发者可以大致划分为四个层级。这些层级依次对应普通、熟练、优秀和卓越这四个词汇,每个层级都有其特定的特征和发展路径。普通开发者通常能够使用一定的专项技术,完成他人分配的模块的开发任务。

2023-11-06 07:30:00 108

原创 Android性能优化系列之内存优化

而自2.3之后,GC操作改成了并发的方式进行,就是说GC的过程中不会影响到应用程序的正常运行,但是在GC操作的开始和结束的时候会短暂阻塞一段时间,不过优化到这种程度,用户已经是完全无法察觉到了。通常GC的线程的优先级别较低。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。

2023-11-06 07:15:00 35

原创 Android性能优化系列之布局优化

我们注意看注释5处,这里就解释了为什么include标签和被引入的布局的根元素都设置了id的情况下,通过被引入的根元素的id来查找子控件会找不到的情况。我们看到,注释5处的会判断include标签的id如果不是View.NO_ID的话会把该id设置给被引入的布局根元素的id,即此时在我们的例子中被引入的id为my_foot_parent_id的根元素RelativeLayout的id被设置成了include标签中的id,即RelativeLayout的id被动态修改成了”my_foot_ly”。

2023-11-03 07:45:00 53

原创 Android程序员需要的一些思考,在不这么做就来不及了!

因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。到了这个阶段,已经掌握了较好的技术,可以靠自己去做一些项目了,不在需要靠复制粘贴别人的代码了,开始关注代码的质量,代码的规范,把该注释的地方,注释好,开始做很多实用的项目。写代码的时候还是会依靠复制粘贴的方式完成代码的编写,他们不考虑程序的质量,代码也写的很乱,也没有注释,他们只要求程序能够运行就好。有良好的团队运作能力。

2023-11-03 07:30:00 260

原创 全面解析Notification

注意:此方法在4.0及以后版本才有用,如果为早期版本:需要自定义通知布局,其中包含ProgressBar视图 使用:如果为确定的进度条:调用setProgress(max, progress, false)来设置通知,在更新进度的时候在此发起通知更新progress,并且在下载完成后要移除进度条,通过调用setProgress(0, 0, false)既可。更新通知很简单,只需要再次发送相同 ID 的通知即可,如果之前的通知还未被取消,则会直接更新该通知相关的属性;更新通知跟发送通知使用相同的方式。

2023-11-01 07:45:00 58

原创 初级、中级 Android 工程师可能因离职而失业吗?

涨薪的最快的办法就是跳槽。但是在2023年的今天,很大一部分Android的小伙伴都不要想着跳槽了,更多的是想着如何苟着。初级、中级 Android 工程师可能因离职而失业吗?会的,尤其是今年。首先,供需不平衡是一个严重的问题。尽管Android开发的需求很大,但是具备实际经验和专业技能的Android工程师却供不应求。大公司往往更倾向于招聘具有丰富经验和高级技能的开发者,这使得初级和中级Android工程师在就业市场上面临更大的竞争压力。其次,技术要求变化快,开发者需要不断学习和更新自己的知识。

2023-11-01 07:15:00 294

原创 程序员过了30岁,还不如去送外卖?

曾经在网上看到这么一个段子:码农:25岁软件工程师->28岁高级软件工程师->32岁架构师->35岁外卖骑手产品:25岁产品经理->28岁高级产品经理->32岁产品总监->35岁滴滴专车运维:25岁运维工程师->28岁高级运维工程师->32岁运维总监->35岁淘宝店主市场:25岁市场专员->28岁市场经理->32岁市场总监->35岁保险销售运营:25岁运营专员->28岁运营经理->32岁运营总监->35岁微商HR:25岁HR专员->28岁HR经理->32岁HR总监->35岁安利。

2023-10-30 07:00:00 48

空空如也

空空如也

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

TA关注的人

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