
阿里巴巴
文章平均质量分 82
Android Developer
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
android高级UI布局层次结构及布局加载流程源码解析
我们写的布局位于DecorView中,DecorView是PhoneWindow的成员变量,而PhoneWindow又是Activity的成员变量,我们称这为布局的层级结构,下面我们从源码出发看看是如何形成的;一、布局层次结构分析1、setContentView分析当调用到我们的Activity的onCreate生命周期方法中后,接着会调用setContentView方法将我们传入的布局显示在界面上,那么这一过程如何实现呢?相关方法调用如下所示。setContentView方法会调用父类Activi原创 2021-05-15 17:40:01 · 814 阅读 · 1 评论 -
一篇文章带你入门音视频
一、概述1)流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。2)封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。3)视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。4)音频编码的主原创 2021-05-13 15:15:15 · 380 阅读 · 2 评论 -
研究Android音视频-3-在Android设备上采集音视频并使用MediaCodec编码为H.264
本文解决的问题本文主要使用MediaCodec硬编码器对Android设备采集的音视频编码封装音视频基础编码器封装音频编码器封装视频编码器使用新封装的视频编码器改造示例2使用Camera进行视频录制(YUV420SP)并保存为视频流(H.264)使用AudioRecord进行音频录制(PCM)并保存为音频流(AAC)使用MediaMuxer混合器合并视频和音频为一路流(H.264)(待完成)示例链接一、封装音视频基础编码器定义编码接口类ICodec:interface IC.原创 2021-05-10 21:03:08 · 639 阅读 · 0 评论 -
做Android开发,如何使用 Kotlin 提高生产力!
Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力。在接下来的内容中,我会分享一些 Kotlin 帮助我们的合作伙伴工程师们提高生产力的方式,并为您介绍有助于此的 Kotlin 功能。在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力简洁、简单且高效Kotlin 的简洁性对开发原创 2021-05-07 14:38:14 · 359 阅读 · 0 评论 -
Android组件化和插件化开发
项目发展到一定程度,就必须进行模块的拆分。模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在 Android 工程实践,目前有两种途径,一个是组件化,一个是插件化。组件化开发说起组件化少不了提起AS模块化的概念,其实两种方式的本质思想是一样的,都是为了代码重用和业务解耦。模块化模块(Module),Android Studio提出的概念,它是根据不同关注点将原项目中共享的部分或业务抽取出来形成独立module,这就类似我们集成的第三方库的SDK。 Module包含两种格式: applica原创 2021-04-22 13:37:39 · 489 阅读 · 1 评论 -
梦想照进现实!记录一下我的头条Android面试心路历程(非985/211)
开篇先讲一下我的职业生涯哈,不想看的可以直接到最后一段。我是普通二本出身,一直飘在北京,先是做web网站开发,后转到了Android移动端,也没有什么好运气,就靠一点小机智,得过且过混到16年初,靠着移动互联网大浪把我推到了一家二线互联网企业,在这里才算真正重构了自己,感谢当时遇到的同事,以及有可以和公司一起成长的机会,先后经历了完整的插件化和RN重度封装,知道了虚拟机和Android源码的重要,并开始积累。18年初,由于公司内部重大调整,动荡不安,再加上自觉jvm和framework很溜了,于是开始看原创 2021-04-21 15:38:06 · 391 阅读 · 0 评论 -
测试应用启动性能
用于测试启动的 Shell 命令本文的编写目的,更多的在于介绍性能、启动测试以及我进行启动测试背后的原因。但如果您只是希望能够快速获得结论,可以直接参考下面的内容:尽可能锁定 CPU 主频 (请参阅下文);在命令行运行如下命令 (保证您的设备处于连接状态)。$ for i in `seq 1 100`> do > adb shell am force-stop com.android.samples.mytest> sleep 1> adb shell原创 2021-04-19 14:25:36 · 327 阅读 · 0 评论 -
客2消,客1消,客0消...脉脉劝退客户端多次的你们究竟是何用意?
经常逛逛脉脉职言平台,作为一名Android开发者,难免会更多的关注行业动态。脉脉职言充斥着:“客户端内卷,客户端3年内消失、客户端2年内消失、客户端1年内消失,客户端已消失。”言论。最近看到很多客户端要消失的言论,整体感觉就是贩卖焦虑。不过,客户端在走下坡路确实是真的。目前客户端存在的原因在于跨平台性能不够好,但差距在缩减。客户端工作三年和工作五年十年的差距,大多数都在深度广度上,源码了解更深,解决的bug多一些,但工作三年开发的 app 已经够用。现在贩卖焦虑也是好事,能提前有危机意识。原创 2021-04-14 15:33:57 · 3874 阅读 · 10 评论 -
在外包公司从Java后端干到安卓开发,你醒醒吧!
这是一位网友和我分享的他的经历:由于他的学历远达不到BAT的要求,大专毕业的他在找工作的时候发现留给自己的机会并不多,最后去了一家不知名的小公司。他告诉我入职后才发现这家公司其实是个外包公司,里面的业务部门和制度相当混乱,负责招聘的HR同时兼管着财务和员工薪资的发放。老板凭人脉从外面接一些项目回来给他们做。吴瑞初出校门没有经验,只能硬着头皮做下去,可他越做越窝心。先是工作内容的问题。当初他应聘的岗位是后端开发,可现实却是他既要写后端,也要写客户端。本着做的多做的广可以学到更多的原则,他并不是非常在原创 2021-04-13 17:05:03 · 2743 阅读 · 1 评论 -
RecyclerView 是 “何方神圣“?为什么选择它呢?
RecyclerView 是一款非常强大的 widget,它可以帮助您灵活地显示列表数据。当我开始学习 RecyclerView 的时候,我发现对于复杂的列表界面有很多资源可以参考,但是对于简单的列表展现就鲜有可参考的资源了。虽然 RecyclerView 的组成结构乍一看有些复杂,但是深入理解以后您会发现它其实非常简单明了。本文会通过创建一个简单的 RecyclerView 实现一个列表来显示不同种类的花的名字。在实现的过程中,我也会将 RecyclerView 的每个部分揉碎了展现给大家,这原创 2021-04-11 21:59:09 · 357 阅读 · 0 评论 -
程序员在你的技术生涯里,大厂履历意味着什么?缺乏澄澈的思考,我并不认为你都明白了!
最近几天,有几个朋友想要投递大厂,于是找我帮忙 Review 简历。所以我顺便问了下他们,为什么想要投递大厂,反馈的大概出发点是:▼ 追求高薪资相对小厂而言,大厂的薪资水平会更高不少。具体数字区间就不细说了,但是大厂整体会大方很多,只要你能够通过面试,30%甚至更高的涨薪都有机会拿到,更何况,大厂的年终奖也不会被“无良”老板随意克扣。▼ 追求稳定去年整体大环境不行,很多公司裁员,尤其是不太盈利的中小厂,比如某团、某滴。而对于大厂而言,裁员的概率会小很多,毕竟裁员带来的收益远比不上因此带来的负面效应和原创 2021-03-17 09:44:00 · 1026 阅读 · 3 评论 -
ARouter 源码解析:阿里推出的路由框架
ARouter 是阿里推出的一款页面路由框架。由于项目中采用了组件化架构进行开发,通过 ARouter 实现了页面的跳转,之前看它的源码时忘了写笔记,因此今天来重新对它的源码进行一次分析。本篇源码解析基于 ARouter 1.2.4初始化ARouter 在使用前需要通过调用 Arouter.init 方法并传入 Application 进行初始化:/** * Init, it must be call before used router. */pu原创 2021-03-09 17:33:34 · 477 阅读 · 0 评论 -
用Java实现JVM第五章《指令集和解释器》
案例介绍本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。我们已经知道,每一个类或者接口都会被Java编译器编译成一个class文件,类或接口的方法信息就放在class文件的method_info结构中。如果方法不是抽象的,也不是本地方法,方法的Java代码就会被编译器编译成字节码(即使方法是空的,编译器也会生成一条return语句),存在method原创 2021-01-17 20:52:35 · 246 阅读 · 0 评论 -
用Java实现JVM第三章《解析class文件》附[classReader拆解]
案例介绍按照如下虚拟机规范,本文主要介绍java版本jvm提取class字节码方式。在java中没有无符号类型,例如js中byte取值是0~256、java中是-128 ~ +127,所以在实际处理字节码时[虚拟机规范u1、u2、u4],需要进行转换。[java虚拟机规范]每个Class文件都是由8字节为单位的字节流组成,所有的16位、32位和64位长度的数据将被构造成2个、4个和8个8字节单位来表示。多字节数据项总是按照 Big-Endian的顺序进行存储。①Big-Endian 顺序是指按高原创 2021-01-15 11:07:26 · 235 阅读 · 1 评论 -
用Java实现JVM第三章《解析class文件》
案例介绍本案例主要介绍通过java代码从class文件中解析;class文件、常量池、属性表;作为类(或者接口)信息的载体,每个class文件都完整地定义了一个类。为了使java程序可以“编写一次,处处运行”,Java虚拟机规范对class文件格式进行了严格的规定。但是另外一方面,对于从哪里加载class文件,给了足够多的自由。Java虚拟机实现可以从文件系统读取和从JAR(或ZIP)压缩包中提取clss文件。除此之外,也可以通过网络下载、从数据库加载,甚至是在运行中直接生成class文件。Java虚原创 2021-01-14 10:10:49 · 238 阅读 · 0 评论 -
用Java实现JVM第二章《搜索class文件》
案例简述本章节主要了解Java虚拟机从哪里寻找class文件并且读取class内字节码环境准备jdk 1.8.0IntelliJ IDEA Community Edition 2018.3.1 x64Notepad++ (插件安装HEX-Editor,用于查看class字节)配置信息调试配置配置位置:Run/Debug Configurations -> program arguments配置内容:-Xjre “C:\Program Files\Java\jdk1.8.0_1原创 2021-01-13 09:20:48 · 241 阅读 · 0 评论 -
用Java实现JVM第一章《命令行工具》
背景描述为了更好的学习jvm阅读过《Java虚拟机规范》、《自己动手写Java虚拟机》,尤其是《自动动手写java虚拟机》可以更加清晰的看到全貌。对于程序开发者来说学习一个新东西最好事必躬亲,亲力亲为的做出一些demo,只有输出了结果心里才踏实。案例简述本章节主要是通过编写java代码,从main方法入口进行获取指令。例如;-version环境准备jdk 1.8.0IntelliJ IDEA Community Edition 2018.3.1 x64配置信息调试配置配置位置:Run/De原创 2021-01-07 16:52:06 · 154 阅读 · 0 评论 -
从根上理解RXJava,深入RxJava 的适用场景和使用方式(Retrofit、RxBinding、RxBus)
前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么?鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用过程中对 RxJava 有原创 2020-12-31 11:25:48 · 424 阅读 · 0 评论 -
Android集成常见问题
本文介绍了Android SDK集成过程中可能出现的问题和解决方法。调用实人认证SDK,进入认证页面一直显示转圈加载查看logcat日志。如果出现ErrorCode=202,则说明签名图片文件(yw_1222_0670.jpg)存在问题。一般是获取签名图片文件时的apk的签名和当前正在运行的apk签名不一致,具体请参见Android集成检查签名,并使用正确签名的apk获取签名图片文件。如果确认自己确实需要多个签名,请分别上传不同签名的apk包获取不同的签名图片文件,在运行时使用正确的签名图片文件。原创 2020-11-25 20:44:43 · 906 阅读 · 1 评论 -
从上帝视角看Android JetPack
从上帝视角看Android JetPack前言作为一名Android老司机,什么Square全家桶,Glide, 各种Bus, MVP,MVVM等等跟Android开发相关的主流的名词那都是如数家珍 。很多时候我们吐槽,Android碎片化严重,Google爸爸又天高皇帝远,对国内的Android生态又心有余而力不足。国内的Android开发者很长一段时间也基本处于散养的状态。项目的库基本都是用上面说到的主流库,自己动手,丰衣足食。可能大部分开发者们更focus的是当下的某个技术点,而缺乏从整个架构原创 2020-11-24 20:20:30 · 240 阅读 · 0 评论 -
今日头条快手等大厂刨根问底之APP启动流程篇
面试官:你知道APP的启动流程吗面试者:知道!当在launcher上点击一个APP的时候他会调用一个startActivity的方法,并给对应的intent设置一个new_task_flag在新的任务栈中启动activity,由于launcher也是一个APP,所以它可以直接调用launcher的activity的startActivity的方法。activity中的startactivity的方法里面其实会调用instrumentation的execstartactivity方法,instrumen原创 2020-11-16 10:54:19 · 534 阅读 · 0 评论 -
Android-春招-面试经历-2019年
Android-春招-面试经历-2019年JarryWell [code小生](javascript:void(0)???? 2019-06-11code小生,一个专注 Android 领域的技术平台公众号回复 Android 加入我的安卓技术群作者:JarryWell链接:https://www.jianshu.com/p/840688b02c7f声明:本文已获JarryWell授权发表,转发等请联系原作者授权感叹一声耗时两个月的找工作经历终于是画上句号了,几十个日日夜夜的酸甜苦辣只有原创 2020-11-13 19:16:54 · 739 阅读 · 1 评论 -
Android 面试题集(2019-04-04总结)
Android 面试题集(2019-04-04总结)ClAndEllen [code小生](javascript:void(0)???? 2019-06-25作者:ClAndEllen链接:https://www.jianshu.com/p/98255550b41e一份Android面试题集,适应于实习 & 初级工程师 & 中级工程师,高级工程师勉强吧。笔者不提供答案,但是会提供学习链接,旨在能帮助广大Android学习者找到心仪的Offer,文章底部是笔者收集的一些有关面试的文章原创 2020-11-13 19:15:55 · 787 阅读 · 0 评论