
字节跳动
文章平均质量分 87
Android Developer
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 使用 DatePickerDialog 显示时间
效果如下:**老规矩最后有源码,步骤如下:调用 Calendar 类获取年月日**重点:在最后你会发现月份少了个 1,这是正常的,api 中说这个值原始值为 0,自己加个一就好了。2. 将年月日的值放入 DatePickerDialog 中源码如下:布局文件** <TextView android:id="@+id/time" android:layout_width="wrap_content" android:layout_原创 2021-07-04 21:16:42 · 1011 阅读 · 2 评论 -
AndroidJetpack Livedata最详尽的使用场景分析
Livedata 概览LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。。LiveData 只会将更新通知给活跃的观察者。为观察 LiveData 对象而注册的非活跃观察者不会收到更改通知。您可以注册与实现 LifecycleOwner 接口的对象配对的观察者。有了这种关系,当相应的 Lifecyc原创 2021-06-22 09:55:07 · 604 阅读 · 0 评论 -
实战演练!二阶贝塞尔仿微信扔炸弹动画
前言新出来的微信炸屎动画很多人都玩过了,所以先仿照一个微信扔炸弹的动画,在后续有时间会做一个完整的,效果如下:具体实现其中最麻烦的就是绘制抛物线了,爆炸的效果只是播放了一个动画,另外微信貌似都是通过代码绘制的,可能不是动画,奈何没有人家那技术,只能找一张动画来凑合。二阶贝塞尔曲线抛物线在这里是通过二阶贝塞尔曲线来完成,所以先来了解下什么是二阶贝塞尔曲线,从下图中可以发现,二阶贝塞尔曲线有三个关键点,我们可以称作起点坐标、终点坐标,还有控制点。起点和终点坐标好理解,控制点可以理解成开始下降的转原创 2021-06-17 09:13:43 · 661 阅读 · 5 评论 -
在 Android 中使用生物识别
为了保护隐私和敏感数据,应用往往会增加用户登录功能。如果您的应用使用了传统的登录方式,那么它的授权过程可能类似如图 1 中所示: 用户输入用户名和密码,应用会根据输入的数据生成设备凭据,然后将其发送到远端服务器进行验证,通过验证后会返回给应用一个 userToken,随后应用便可使用该 token 去服务器查询受限的用户数据。无论是要求用户每次打开应用都需要登录,还是只要求在安装启动后进行仅此一次的登录,图 1 所示的流程都适用。△ 图 1: 未使用生物识别的授权流程然而,图 1 这种授权方式有一些弊原创 2021-06-09 21:13:14 · 683 阅读 · 0 评论 -
Handler机制与原理
为什么会出现内存泄漏问题呢?分析Handler使用是用来进行线程间通信的,所以新开启的线程是会持有Handler引用的,如果在Activity等中创建Handler,并且是非静态内部类的形式,就有可能造成内存泄漏非静态内部类是会隐式持有外部类的引用,所以当其他线程持有了该Handler,线程没有被销毁,则意味着Activity会一直被Handler持有引用而无法导致回收MessageQueue中如果存在未处理完的Message,Message的target也是对Activity等的持原创 2021-06-01 13:45:59 · 471 阅读 · 1 评论 -
android高级UI布局层次结构及布局加载流程源码解析
我们写的布局位于DecorView中,DecorView是PhoneWindow的成员变量,而PhoneWindow又是Activity的成员变量,我们称这为布局的层级结构,下面我们从源码出发看看是如何形成的;一、布局层次结构分析1、setContentView分析当调用到我们的Activity的onCreate生命周期方法中后,接着会调用setContentView方法将我们传入的布局显示在界面上,那么这一过程如何实现呢?相关方法调用如下所示。setContentView方法会调用父类Activi原创 2021-05-15 17:40:01 · 822 阅读 · 1 评论 -
一篇文章带你入门音视频
一、概述1)流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。2)封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。3)视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。4)音频编码的主原创 2021-05-13 15:15:15 · 390 阅读 · 2 评论 -
Android组件化和插件化开发
项目发展到一定程度,就必须进行模块的拆分。模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在 Android 工程实践,目前有两种途径,一个是组件化,一个是插件化。组件化开发说起组件化少不了提起AS模块化的概念,其实两种方式的本质思想是一样的,都是为了代码重用和业务解耦。模块化模块(Module),Android Studio提出的概念,它是根据不同关注点将原项目中共享的部分或业务抽取出来形成独立module,这就类似我们集成的第三方库的SDK。 Module包含两种格式: applica原创 2021-04-22 13:37:39 · 493 阅读 · 1 评论 -
梦想照进现实!记录一下我的头条Android面试心路历程(非985/211)
开篇先讲一下我的职业生涯哈,不想看的可以直接到最后一段。我是普通二本出身,一直飘在北京,先是做web网站开发,后转到了Android移动端,也没有什么好运气,就靠一点小机智,得过且过混到16年初,靠着移动互联网大浪把我推到了一家二线互联网企业,在这里才算真正重构了自己,感谢当时遇到的同事,以及有可以和公司一起成长的机会,先后经历了完整的插件化和RN重度封装,知道了虚拟机和Android源码的重要,并开始积累。18年初,由于公司内部重大调整,动荡不安,再加上自觉jvm和framework很溜了,于是开始看原创 2021-04-21 15:38:06 · 392 阅读 · 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 · 334 阅读 · 0 评论 -
客2消,客1消,客0消...脉脉劝退客户端多次的你们究竟是何用意?
经常逛逛脉脉职言平台,作为一名Android开发者,难免会更多的关注行业动态。脉脉职言充斥着:“客户端内卷,客户端3年内消失、客户端2年内消失、客户端1年内消失,客户端已消失。”言论。最近看到很多客户端要消失的言论,整体感觉就是贩卖焦虑。不过,客户端在走下坡路确实是真的。目前客户端存在的原因在于跨平台性能不够好,但差距在缩减。客户端工作三年和工作五年十年的差距,大多数都在深度广度上,源码了解更深,解决的bug多一些,但工作三年开发的 app 已经够用。现在贩卖焦虑也是好事,能提前有危机意识。原创 2021-04-14 15:33:57 · 3893 阅读 · 10 评论 -
使用 Flutter 快速实现聊天应用
作者:隋晓旭想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。你是否想过从头开发一款类似 QQ、微信的聊天应用?又或者,想要在你开发的应用中加入聊天功能,方便用户交流,增强用户粘性?那么,这篇文章就是为你准备的。在这篇文章中,我将介绍如何基于 Flutter 快速实现一款聊天应用。应用简介这个基于 Flutter 开发的应用还在持续完善中,现已经支持如下功能:登录、登出发起单聊发起群聊支持文字消息、语音消息、图片消息支持原创 2020-10-14 17:16:11 · 1245 阅读 · 0 评论 -
移动开发程序员的悲哀是什么?
移动开发程序员完全是一个刀口舔血的职业!我今年33岁,身边熟悉的不少朋友,从事互联网行业,年龄在 40 岁附近。常常,我通过观察他们,想象自己的未来的样子。这些朋友,更准确的说,是我的老师,师兄,前辈,在40岁的年纪,人生境况各不相同。有位师兄,打拼多年,现在的职级是阿里 P9。这一两年和他联系较多,主要是作为晚辈后生请教问题。阿里集团有十万员工,在 P9 职级的员工只有寥寥千人,所能够获得的工资和股票,远远超过了普通人的期望。我问过他,怎么看待这几年愈演愈烈的中年危机话题。他没有多说,只淡淡的提了一原创 2020-09-28 16:52:49 · 645 阅读 · 0 评论 -
Android中Bitmap内存优化
Android开发中,Bitmap是经常会遇到的对象,特别是在列表图片展示、大图显示等界面。而Bitmap实实在在是内存使用的“大客户”。如何更好的使用Bitmap,减少其对App内存的使用,是Android优化方面不可回避的问题。因此,本文从常规的Bitmap使用,到Bitmap内存计算进行了介绍,最后分析了Bitmap的源码和其内存模型在不同版本上的变化。Bitmap的使用一般来说,一个对...原创 2020-03-26 20:23:22 · 527 阅读 · 1 评论 -
2020最新Android大厂高频面试题解析大全(BAT TMD JD 小米)
本文首发于简书——Alvin老师,搬运转载请注明出处,否则将追究版权责任。上次搜集整理字节跳动面试专题文章的时候也过去了差不多一个月了,期间收到了面试交流群友的积极响应,纷纷表示获益匪浅。部分同学也因此收获了理想的offer!但看到还有很多人最近还在找Android开发工作, 而且很多人都感觉今年受疫情影响,找工作比去年难很多, 竞争力也增加不少, 因此激发我整理这份Android大厂高...原创 2020-03-26 16:31:32 · 1707 阅读 · 2 评论 -
Android GC原理探究(深度好文)
相信大家都遇到过手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC,GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。1、JVM内存回收机制1.1 回收算法标记回收算法(Mark and Sweep GC)从"GC Roots"集合开始,将内存整个遍...原创 2020-03-25 09:27:29 · 819 阅读 · 0 评论 -
这8 项升职加薪的技能,90%程序员都没掌握!!!
我是码农出身,工作十年,从 初级程序猿(半年) - 项目主力(一年) - 初级技术管理(一年) - 中级技术管理(两年) - 部门管理(两年) - 高层管理(三年) - 职业经理人,一条路走过来,关于升职加薪技能,有一些自己的心得可以分享。01、吃透一门编程语言这个技能看起来似乎没有必要强调,毕竟程序员不懂一种编程语言也说不过去啊。我之所以再次强调是怕你“贪心”,以为技多不压身就拼了命的学很多...原创 2020-03-23 15:36:45 · 647 阅读 · 0 评论 -
CoordinatorLayout使用详解: 打造折叠悬浮效果
1.简介CoordinatorLayout遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的折叠悬浮效果。作为最上层的View作为一个 容器与一个或者多个子View进行交互2.AppBarLayout它是继承与LinearLayout的,默认 的 方向 是Verti...原创 2020-03-20 09:28:58 · 653 阅读 · 0 评论 -
【建议收藏】面试没有亮点?给你一份Android热门三方库源码面试宝典
前言成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。众所周知,优秀源码的阅读与理解是最能提升自身功力的途径,如果想要成为一名优秀的Android工程师,那么Android中优秀三方库源码的分析和理解则是必备技能。就拿比较热门的图片加载框架Glide来说,相信很多同学都使用过,那么,当别人问你下面这些问题时你是否能回答出来呢?(Glide五连发...原创 2020-03-19 10:22:59 · 241 阅读 · 0 评论 -
在字节跳动我是如何当面试官(持续更新)
前言由于疫情关系,最近在各大网络技术交流平台看到很多同学的工作情况内心还是蛮触动的(降薪、变相裁员、辞退等)。可能这并不是当下一个普遍的现象,但仍然使我感受到Android开发这碗青春饭不好混。于此同时联系我内推的同学很多都处于待业状态,能感受到他们内心的迷茫和焦灼。于是内心一直有声音督促我,赶紧写点面试相关的东西出来吧,哪怕对大家只有一丝丝的帮助。当然这次我会以面试官的角度出发(可能不是一个优...原创 2020-03-17 15:16:33 · 1629 阅读 · 0 评论 -
Android 黑科技保活实现原理揭秘
一直以来,App 进程保活都是各大厂商,特别是头部应用开发商永恒的追求。毕竟App 进程死了,就什么也干不了了;一旦 App 进程死亡,那就再也无法在用户的手机上开展任何业务,所有的商业模型在用户侧都没有立足之地了。早期的 Android 系统不完善,导致 App 侧有很多空子可以钻,因此它们有着有着各种各样的姿势进行保活。譬如说在 Android 5.0 以前,App 内部通过 nativ...原创 2020-03-16 17:16:43 · 1048 阅读 · 0 评论 -
Flutter +携程=?
目录主要页面,包括首页、搜索、旅拍和我的四个主页面依赖库实际效果主要页面整体框架采用PageView + BottomNavigationBar ,每个页面的状态保存采用AutomaticKeepAliveClientMixin首页全面屏适配,体现在顶部搜索框距离状态栏的距离,项目内笔者采用的是 MediaQueryData.fromWindow(window).pad...原创 2020-03-15 20:47:31 · 422 阅读 · 1 评论 -
抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%(一)
我们知道,Android 低版本(4.X 及以下,SDK < 21)的设备,采用的 Java 运行环境是 Dalvik 虚拟机。它相比于高版本,最大的问题就是在安装或者升级更新之后,首次冷启动的耗时漫长。这常常需要花费几十秒甚至几分钟,用户不得不面对一片黑屏,熬过这段时间才能正常使用 APP。这是非常影响用户的使用体验的。我们从线上数据也可以发现,Android 4.X 及以下机型,其新...原创 2020-03-14 10:04:04 · 1025 阅读 · 0 评论 -
面经分享:快手凉经,字节跳动已拿offer
前言2019年年初的时候我就开始偷偷投简历了。因为在现在的从事的即时通讯企业做的不开心了,客户产品善变,公司开会贼多。当然最关键的还是工资没给到位,事情都做了,却TMD不给升职加薪,因此心里窝火,也为了再次向社会证明我的价值和能力。移动互联网的普及和智能终端设备的广泛应用,短视频、直播、在线教学1V1等各类形式的实时音视频通信模式风靡大众,成为人们日常沟通的新模式。已经形成南抖音北快手格局。...原创 2020-01-15 12:07:30 · 3366 阅读 · 2 评论 -
如何缩减接近 50% 的 Flutter 包体积
以下是字节跳动移动平台部 Flutter 资深工程师李梦云的分享主题沉淀,《如何缩减接近 50% 的 Flutter 包体积》。演讲内容大纲:包体积问题现状Dart 编译产物优化Flutter 引擎编译产物优化机器码指令优化总结与展望个人介绍我叫李梦云,任职于字节跳动移动平台部,负责移动端部分基础设施平台的建设与落地,前两年落地插件化平台和热修复平台,这两个平台现在基本字节...转载 2019-12-19 13:57:42 · 2603 阅读 · 0 评论