Android开发
文章平均质量分 88
AI女王
学习资料分享→推广名片
展开
-
Android车载开发,手把手教你入门
转眼间,22年已经接近尾声。这几年的大环境让大家都过的不安逸;社会动荡与就业问题一直困扰了不少人。在大家都认为的高薪工作程序员行业中,现在也是费力不讨好裁员风潮大部分指向互联网。我们Android开发基本上已经感受很久了,就这就业问题很难存活。对此我们的目光都朝向了新方向——Android车机开发。说到车机开发岗位,也有许多人都知道。岗位很多就业环境对比其他开发很乐观;也有许多程序员转行加入车载开发工作,工薪也还不错。原创 2023-03-13 20:36:33 · 2316 阅读 · 0 评论 -
Android 设计模式 - 源码 之 单例模式
基类所以,这里单例抽象基类的作用:(1) 提供获取单例对象的方法(2) 声明 创建 单例对象 的抽象方法, 具体创建过程由子类实现(3) 提供 泛型参数,由子类 确定单例的实际功能本文转自,如有侵权,请联系删除。原创 2023-01-24 07:00:00 · 139 阅读 · 0 评论 -
Android Framework学习之跨进程传递大图片
跨进程通信是需要buffer的,发送数据需要buffer,返回数据也需要buffer,buffer只有整个transaction结束时才释放,发送数据占用太多buffer的话,留给返回数据的buffer就很少了。上面代码块,如果使用那个intent启动另外一个进程的Activity,会抛出TransactionTooLargeException, 是因为这个bitmap直接copy到缓冲区了,没有里有ashmem机制,因为allowFd机制没有打开。两次IO操作,进程1将图片写到磁盘上,进程2从磁盘读取。原创 2023-01-06 15:14:30 · 427 阅读 · 0 评论 -
Android性能优化学习篇——成为大佬指日可待
Android已经在全国各地普及,然而性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线程、锁、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因此解决性能问题的关键是在于能不能尽早地发现和定位这些“坑”。原创 2022-12-27 14:31:51 · 156 阅读 · 0 评论 -
听说学完这篇Android音视频开发进阶指南的人,已经坐拥别墅了..
近些年来,随着各大短视频app的兴起,Android音视频开发也越来越受到重视。但是由于音视频开发涉及知识面比较广,入门门槛相对较高,让许许多多开发者望而生畏。整个音视频领域的架构以及开发已经演进了很长时间。从最开始的广电领域,到PC端的音视频领域,再到移动端的音视频领域。尤其在这几年中,移动端音视频领域架构的变化是巨大的。在Android开发岗位中,音视频开发也发挥着不可言喻的作用,该岗位对个人要求也比较高。音频数据的承载方式最常用的是脉冲编码调制,即PCM。原创 2022-12-15 14:52:23 · 146 阅读 · 0 评论 -
Android中消息总线的几种实现方式
消息总线又叫事件总线,为什么我们需要一个消息总线呢?是因为随着项目变大,页面变多,我们可能出现跨页面、跨组件、跨线程、跨进程传递消息与数据,为了更方便的直接通知到指定的页面实现具体的逻辑,我们需要消息总线来实现。从最基本的 BroadcastReceiver 到 EventBus 再到RxBus ,后来官方出了AndroidX jetpack 我们开始使用LiveDataBus,最后到Kotlin的流行出来了FlowBus。我们看看他们是怎么一步一步演变的原创 2022-11-26 21:37:53 · 290 阅读 · 0 评论 -
一文带你学完ButterKnife 的源码
ButterKnife 这个开源库火了有一段时间了,刚开始它的实现原理是使用反射实现的,性能较差。再后面的版本中逐渐使用注解+放射实现,性能提高了不少。原创 2022-11-25 17:42:36 · 175 阅读 · 0 评论 -
2022程序员群体职场洞察报告:Android开发想要升职加薪应该学到什么程度?
近日,拉勾招聘针对程序员这一群体展开调研,并发布了《2022程序员群体职场洞察报告》,我们可以清晰地看到当前程序员群体的现状。对于2022的计算机毕业生群体:有77%的本科毕业生起薪超过了1万元,只有23%的00后程序员薪资在1万元以下。。而在这当中,11%的人经历过降薪;7%的人有过被裁员的经历,遭遇裁员后仍有3%的人未找到新的工作。可见,,这不单单是技术的问题,部门的晋升空间也是一件很重要的方面,,为了工作而工作,会给以后的发展留下大坑。原创 2022-11-23 14:33:19 · 334 阅读 · 0 评论 -
谈论flutter和jetpack compose学习优先级的背后,Android开发有着怎样的一套进阶逻辑?
在1982年的原版电影《银翼杀手》中,人类创造的“复制品”被用于危险的工作,当它们开始反抗时,一种被称为“刀锋杀手”的警官出现了。当谷歌第一次宣布Jetpack Compose时,不少人认为这将是flutter的结束。那我们来整体比较一下flutter和jetpack compose,看看他们各自有什么特点。原创 2022-11-21 14:24:09 · 1166 阅读 · 0 评论 -
Android 线程池:类型、区别及使用场景
每个 Android 应用进程在创建时,会同时创建一个线程,我们称之为主线程,负责更新 UI 界面以及和处理用户之间的交互,因此,在 Android 中,我们又称之为 UI 线程。一个进程中 UI 线程只有一个,为了不造成界面卡顿、提高用户体验,我们势必要将一些耗时操作交由子线程来执行。使用子线程的方式主要分两种:直接使用 Thread和 Runnable等创建子并使用线程使用线程池创建并使用子线程。原创 2022-11-17 18:02:19 · 812 阅读 · 0 评论 -
Android进阶全套资料已上线,带你直面“裁员”这一敏感话题
很多前人的经历告诉我们,刚刚毕业几个月就赶上了裁员大礼包的事情也会发生,还没干多久,甚至业务都不熟,就被打上能力不行的标签而辞退的人也比比皆是。在2022 年的今天,被裁员并不是新鲜事。?你会怎么回答呢?很多人可能会含糊其辞,说很多的客观原因,比如公司与自己的职业规划不匹配,公司的企业文化不太认同,团队氛围不太好……也有很多人宁愿让自己毕业后的一段时间空缺,也不会把短期的工作经历写上简历。不过,不管是哪种做法,都需要想好怎么回答。明确这是个人能力有问题,还是公司业务规划有问题呢?原创 2022-11-15 16:13:45 · 112 阅读 · 0 评论 -
跨平台之争,flutter能走多远?学起来又要多久?
就目前来看,Flutter技术本身就比其它的跨平台技术要好,Flutter是一种跨平台 UI架构,可以实现快速渲染和更有表现力的设计,提高了flutter开发的上限。Flutter包括了滚动、导航、图标、字体等等,在Android上甚至可以达到类似原生的效果。原创 2022-11-08 22:10:25 · 400 阅读 · 0 评论 -
flutter与Android混合开发全攻略,flutter真的很重要
在新开发一个应用程序时,我们可以充分使用 Flutter进行开发,实现效果最大化。但是,对于一个已经成熟的应用程序来说,用 Flutter来重新编写所有程序不是那么现实。不过flutter开发者考虑到了这一点,Flutter能够很好地将其整合到一个已有的应用程序中,也就是所谓的混合开发模式。大家可以先思考一下flutter和Android原生之间的关系。想好了吗?原创 2022-11-07 21:39:51 · 5084 阅读 · 0 评论 -
Android基于MQTT来实现消息通知
在对接项目中IoT时,发现目前有对MQTT做了接入,这里主要从实现细节出发;对具体的需求以及配套的技术方案进行整理,以供参考。MQTT是用于物联网的最常用的消息传递协议(IoT)。MQTT代表MQ遥测运输。该协议是一组规则,它定义了IoT设备如何通过Internet发布和订阅数据。用于IoT和工业IoT(IIT)设备(例如嵌入式设备,传感器,工业PLC等)之间的消息传递和数据交换。协议是事件驱动的,并使用发布/订阅(PUB / SUB)模式连接设备。发布者和接收器(订阅者)通过主题通信,并彼此分离。原创 2022-11-03 22:06:59 · 820 阅读 · 0 评论 -
监听Activity生命周期方式及相关案例
本篇文章主要讲解如何快速实现Activity生命周期监听,以及其在官方lifecycle、第三方库Glide、PermissionX中的应用。原创 2022-11-02 22:24:54 · 662 阅读 · 0 评论 -
常用的 Android 开源库整理
在Android的开发过程中,每个开发者或多或少的都使用过第三方的开源库,使用第三方的开源库可以给开发者节省大量的精力和时间,进而更好的关注应用本身的业务逻辑。下面列出一些开发者们非常常用的开源库。Fresco是非常强大的显示图像的开源库,它能够很好的处理图像的加载和显示。能够加载网络、本地数据库、本地资源中的图像,在图像加载出来之前,还能够预先设置一个预设的图像占位符,有二级缓存(内存和硬盘缓存)另外Fresco还提供了一些其他的开源库支持 Gif,WebP等。原创 2022-10-31 23:24:28 · 374 阅读 · 0 评论 -
Android中APK安装过程
你能从这篇文章中得到什么?本文介绍android如何处理应用程序安装过程。具体包括:安装应用程序的方法有哪些?android如何处理安装过程?如何默认应用程序PackageInstaller表演它的魔力?流程如何从一个活动流向另一个活动?这个过程涉及到哪些不同的组件?安装APK的不同方法。安装Android应用程序有几种方法。原创 2022-10-27 20:13:47 · 6252 阅读 · 0 评论 -
最新Android面试题帮你把握Android未来新发展
近几年来很多人不太看好Android未来的发展,至于原因嘛,第一,越来越多的桌面系统和工具出现,对Android的依赖性有所减少,第二,Android开发市场的人才需求趋于饱和,大家纷纷转向大热门的前后端方向。但我们应该看到了是,Android在应用程序开发上一直在发展,为了更好地适应这一发展变化,我们需要把握好Android的发展趋势,并作出相应的学习,不断提高自己的能力水平。这里我们仅考虑Android在移动应用开发上的新发展:1、快应用、小程序的出现。原创 2022-10-26 15:41:29 · 215 阅读 · 0 评论 -
跨平台开发之辩,flutter进阶学习的理由太硬核(内附flutter学习笔记)
我在和Android同行人员交流Flutter时,他们通常会问我为什么不用React Native或其他一些SDK呢?其实理由很简单,Flutter是值得大家去学习的,这个时候的解释也是有必要的。因为我们总是在学习了一门工具之后就很难再花时间去学其他的了,先入为主的观念会让我们很难放弃“老办法”,只是不断地找补和适应。那Flutter到底有什么优势呢?1、Dart有一个干净而强大的语法,它。原创 2022-10-18 17:59:43 · 271 阅读 · 0 评论 -
【Android开发必看】系统掌握Android性能优化的机会终于等到了
想成为一名专业的Android开发,不是临门一脚背八股,也不是混迹天涯打下手,性能优化是每个Android开发者都要考虑的一件事。由于各大手机厂商对Android原生系统进行定制化修改,导致应用开发的适配工作越来越难,应用出现bug问题可以通过查找日志找到问题的根源,但是性能问题却是一个系统化的工程。Android性能问题有很多,包括内存优化、启动优化、耗电优化、apk大小优化等,同时一个应用的开发还会与虚拟机、网络等方面息息相关,一旦出现性能问题,需要排查的地方就更多,思路更加复杂,这就。原创 2022-10-17 17:21:26 · 140 阅读 · 0 评论 -
2022最新秋招+社招Android面试题汇总+解析(内含字节、网易等大厂面经)
在网上搜索最新面试题需要的时间成本太高,还很难找到一个对自己有指导性的面经,所以我专业也在这里一并分享给大家,希望能给到大家带来一点思考和启发。原创 2022-10-13 16:25:42 · 558 阅读 · 0 评论 -
2022最新Android面试题助你进大厂,未来的Android开发工程师快来了解一下
不知不觉2022年的最后一个法定节日已经过完了,大家现在是在实习还是在忙着准备校招社招,亦或是有其他更好的打算呢?应届毕业生阶段的面试是我们与大厂最近的机会,以一个过来人的经验,建议大家这个阶段不要太眼高手低,选择自己能力之上更好一点的公司,这就意味着这个时候必须要。要意识到如果没有足够年限的项目经验,想要通过社招进入大公司基本没太大可能性,行业寒气、疫情当前,未来更是存在极大的不确定性,如果在公司没有去做技术性的大项目,跳槽自然不会容易,找工作时的面试更是难上一等。原创 2022-10-11 16:02:19 · 157 阅读 · 0 评论 -
Android面试大厂必考174题.PDF
摆烂”一个比较火的词语,在工作和学习过程中,我们经常听到有人在考试和工作经常说“摆烂”,结果每次都是在结果公布的时候总是最好的那个、最受表扬的那个、最令人羡慕的那个。想要在众多竞争者中突破并拿到offer就得花比其他多1倍2倍甚至3倍的时间来学习,世界上时间目前相对于每个人都是公平的,那么想要比其他人更好,除了要比其他人花更多的时间来学习,同时自己的学习效率要好,并不是花的时间越多越好。下面我将分享我是如何准备的1)规划好自己每天要学习的知识和内容httpshttpshttpshttps。......原创 2022-07-18 15:07:40 · 240 阅读 · 0 评论 -
二十岁的我4面拿到字节跳动offer,至今不敢相信
很多人啃了几本青春文学,就喜欢把“谁的青春不迷茫”挂在嘴边,但是试问自己看看,是真迷茫,还是你自己没有想过未来,没有规划过人生?因为任何难点,都有突破口。你没有能力,可以通过学习来改变自己;你没有颜值,可以靠化妆来美化自己;你没有财力,可以节约,钱是可以攒出来的,少吃一顿外卖,多自己动手做饭,节省开销的同时能学到一门技能。二十岁对于你来说,可能工作不稳定,可能工资不理想,但是生活是你自己经营的,是好是坏,都取决于你自己的状态。1.将时间分成阶段,去阶段性地成长人生很长,我们擅长把自己的人生分成几个重要的阶原创 2022-07-04 21:07:41 · 104 阅读 · 0 评论 -
跳槽字节跳动很难嘛?掌握这些技巧,你也能轻松通过
自己在阿里呆了四年目前是P6,感觉遇到了瓶颈P7一直上不去,这才我绝对跳槽到字节试试不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:自我介绍。(介绍自己的项目经历以及一些特长而不是简单自我介绍喜好等)自己面试中可能涉及哪些知识点、那些知识点是重点。面试中哪些问题会被经常问到、面试中自己该如何回答。自己的简历该如何写。“80%的offer掌握在20%的人手中” 这句话也不是不无道理的。决定你面原创 2022-06-29 21:01:40 · 251 阅读 · 0 评论 -
ArgusAPM 源码解析与学习
ArgusAPM 移动性能监控平台是 360 开源的一款 APM 监测工具。 目前已经停止免费的服务端接入,但是对于我们从客户端的角度来搭建 监测还是有不错的学习参照意义。目前支持如下性能指标:本文也将围绕 总体框架和支持的功能点进行分析。项目分为三个目录,分别是:工程定义了一个名为 的 ,主要有以下两个作用:关于实现一个 的过程这里就不赘述了,下面看一下整体的框架。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vt1jfbtf-1655453421261)(https:/原创 2022-06-17 16:12:03 · 664 阅读 · 0 评论 -
Android启动优化-类预加载
在Android各项优化里面,其中有一块避不开的就是启动优化,大部分的优化往往跟业务相关,比如延迟加载、特定资源预加载等,今天不讨论业务相关,仅从jvm加载类优化聊起,因为它逻辑独立并且实现起来也相对简单。简单描述一下Android的类加载,指的是从dex包加载对应的class到方法区中,后续就可使用这个类对象。也是利用这个类加载机制,衍生出了插件化、热修复机制。这里就不简述jvm的双亲委派机制了;BootClassLoader 加载Framework的class;PathClassLoader 默认的Cl原创 2022-06-14 21:32:11 · 1877 阅读 · 1 评论 -
【Jetpack】一次Android权限请求库的封装记录
项目中,把申请权限相关的操作都塞到BaseActivity/BaseFragment中,可以,但不太优雅,很多子类Activity/Fragment被迫继承了这个用不到的功能。毕竟只有刚进APP、拍照录像、地图定位时才会去申请权限,属实没必要。所以本节想做的事就是:捋下权限相关常识 + 用Activity Results API封装个权限请求库玩玩。多说无益,我直接开始!如果App中用到了硬件,如相机,建议加上 可选声明,不加的话,Android系统会认为你的App要在有该硬件的情况下才能运行,如果没此硬原创 2022-06-08 21:41:39 · 843 阅读 · 0 评论 -
【Jetpack】学穿:ViewModel → 视图模型
来来来,继续学穿Jetpack,本节带来组件 → 视图模型的解读!叫 视图数据 可能更贴切,有人也叫 视图状态,都一个意思,怎么称呼看你自己喜欢~ViewModel 将 从 中分离,并实现了 的:、 及 。视图控制器视图数据ViewModel所做的事,就是用 模版方法模式 进行封装,隐藏一些具体细节,提供简洁的API供我们使用。给了我们一种它们好像真的分离了的错觉,实际上还是与视图控制器紧密相连,ViewModel依旧被对应的Activity、Fragment所持有。最直观的体现::。写个简单的例子原创 2022-06-06 21:28:58 · 336 阅读 · 0 评论 -
【Jetpack】学穿:ViewBinding → 视图绑定
手机厂商还没卷完Android 12,Android 13 就悄然声息地来了,距离Google 2008年9月22日发布Android 1.0,已过去13个年头。历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者从最初的框架少、没规范、代码都得自己写,到轮子、框架满天飞。得益于此,我们少做了很多脏活累活(基础代码),把更多的时间花在业务逻辑上,达成快速迭代的目的。但琳琅满目的技术选型,也让开发者无从选择,以致于做出的应用良莠不齐,Android官方一直没推出开发标准。而一些技术社区出于更原创 2022-06-01 21:58:42 · 427 阅读 · 0 评论 -
【Jetpack】学穿:Lifecycle → 生命周期 (原理篇)
0x1、Lifecycle核心思想本质上是围绕着这两个设计模式进行的:模板模式 → 定义算法骨架,对外开放扩展点,基于 继承 关系实现,子类重写父类抽象方法;观察者模式 → 对象间定义一对多的依赖,当一个对象状态发生改变,依赖对象都会自动收到通知;本节先肝下Lifecycle组件的两个库 lifecycle-common 和 lifecycle-runtime 的源码,了解实现原理,在肝Activity、Fragment中Lifecycle是如何发挥作用的。希望通过这节,能让你在实际开中能够有原创 2022-05-30 21:21:10 · 541 阅读 · 0 评论 -
【Jetpack】学穿:Lifecycle → 生命周期 (使用篇)
0x1、Lifecycle简介本节继续学穿Jetpack,带来第二个组件 Lifecycle,用于帮助开发者管理Activity、Fragment的生命周期,它可是LiveData、ViewModel等组件的基石。日常开发中经常会遇到这些问题:需要在Activity、Fragment的生命周期回调中执行特定操作,否则会引起 程序错误 或 内存泄露,比如:无限循环的属性动画忘记在onDestory中取消,Eventbus忘记在onDestory中unregister等。不要想着自己小心注意就好,在多原创 2022-05-27 17:04:53 · 938 阅读 · 0 评论 -
【Jetpack】学穿:DataBinding → 数据绑定 (使用篇)
0x1、引言ViewBinding(视图绑定) 的作用和原理一言以蔽之:作用 → 代替findViewById 的同时,还能保证 空安全 和 类型安全,且 支持Java;原理 → AGP为模块中的每个XML生成绑定类,本质上还是findViewByid,只是自动生成控件实例,并一一对应;可以把 ViewBinding 看做 DataBinding 功能的 子集,它有的DataBinding都有,而且还多了 数据绑定。何为数据绑定? 在维基百科中的定义如下:是将 “提供器” 的数据源与 “消原创 2022-05-26 16:43:02 · 1311 阅读 · 0 评论 -
【Jetpack】学穿:Activity Results API
0x1、引言🥰 不是什么新玩意了,恰逢最近拆公司项目的BaseFragment时看到介个:下划线?Deprecated?点开源码看下啥原因,有啥替代方案:注释说这种写法out了,可在 ActivityResultContract 中传入一个 RequestMultiplePermissions 对象,并在回调中处理结果。除此之外,诸如 startActivityForResult()、onActivityResult() 等都过时了。搜了一波官方文档《获取 activity 的结果 》,没找到原创 2022-05-24 16:53:45 · 371 阅读 · 0 评论 -
Flutter 点击两次退出app
在安卓手机上才会有物理返回键,而ios手机是没有的,所以说这个是安卓手机独有的功能。使用场景:当用户在某一段时间内连续点击两次返回键,才会被认为是退出应用。在Flutter中想实现这个功能,首先我们先来认识一个Flutter中的组件WillPopScope,在Flutter中我们是用这个组件来实现物理返回键拦截的,从而实现点击两返回键退出应用。onWillPop是他的一个回调函数,当用户点击返回按钮时被调用(Android物理返回按钮),该回调需要返回一个Future对象,如果返回的Future最终值原创 2022-05-12 22:05:31 · 1006 阅读 · 0 评论 -
AIDL 有很多要注意的地方
官方提醒,只有在需要不同应用的客户端通过 IPC 方式访问服务,并且希望在服务中进行多线程处理时,我们才有必要使用 AIDL。如果我们无需跨不同应用执行并发 IPC,则应通过 实现 Binde来创建接口;或者,如果我们想执行 IPC,但不需要处理多线程,请 使用 Messenger来实现接口。本文主要是对于 AIDL 使用上的一点思考场景:我创建了两个应用,一个 app 作为服务端: BlogService,一个 app 作为客户端: BlogSample。其实同应用的多进程更常见一些,设计成多进.原创 2022-05-10 21:17:22 · 548 阅读 · 0 评论 -
APK打包流程-资源编译
资源类型资源在APK中非常重要,Android内自定义的资源类型包括以下几种类型:动画资源:补间动画: 保存在res/anim中,通过R.anim类访问帧动画:保存在res/drawable中,通过R.drawable类访问颜色列表资源:定义根据View状态而变化的颜色资源,保存在res/color/中,并通过R.color类访问可绘制资源:使用位图或者XML定义各种图形,保存在res/drawable中,通过R.drawable类访问布局资源:定义页面的布局,保存在res/layou原创 2022-05-06 17:04:07 · 680 阅读 · 0 评论 -
Android 12:SplashScreen Compat源码解析
前言在上一篇文章Android 12 新功能:SplashScreen优化启动体验中我们介绍了Android 12上的一个新功能SplashScreen,同时提到了Google为了兼容低版本也提供了Androidx SplashScreen compat库,但是我们在使用的过程中发现这个库在Android 12和12以下版本表现并不一致,今天我们就从源码来分析一下实现细节。SplashScreenViewProviderAndroidx SplashScreen compat库的代码其实很少,只有两个原创 2022-03-31 16:45:52 · 383 阅读 · 0 评论 -
Android 12 已来,你的 App 崩溃了吗?
Android 12 已来,你的 App 崩溃了吗? 我们已经开始做 Android 12 的适配了,在 Android 12 中包含了很多的功能和一些行为的变更,接下来我们一起来分析这些行为的变更对我们的应用产生了那些影响。通过这篇文章你将学习到以下内容:为什么在 Android 12 上需要显示声明 android:exported 属性?为什么在 Android 12 上需要显示指定 PendingIntent 的可变性?为什么在 Android 12 上限制 adb 备份的默认行为?如何原创 2022-03-31 16:45:20 · 483 阅读 · 0 评论 -
Android - 资源加载扫盲
Android资源的含义Android使用xml文件描述各种资源,包括字符串、颜色、尺寸、主题、布局、甚至是图片(selector,layer-list)资源可分为两部分属性在APK程序中,属性定义在res/values/attrs.xml中,在系统中属性位于framework/base/core/res/res/values/attrs.xml文件中<declare-styleable name="Window"> <attr name="windowBackg原创 2022-03-30 15:16:13 · 870 阅读 · 0 评论