
Android
文章平均质量分 89
初一十五啊
3年Java,7年Android开发经验,长期混迹在一线城市,拥有丰富的开发以及管理经验;
《Android开发入门与实战第二版》作者之一
展开
-
Android性能优化之APK瘦身详解(瘦身73%)
Android性能优化之APK瘦身(瘦身73%)原创 2022-07-28 16:12:09 · 789 阅读 · 1 评论 -
Android TV按键焦点原理浅谈
Android源码讲解TV的按键事件分发原理和焦点查找原理原创 2022-07-26 19:45:15 · 702 阅读 · 0 评论 -
人潮汹涌,接近金九银十,有这份Android PDF助力offer必拿下
人潮汹涌,接近金九银十,有这份Android PDF助力offer必拿下原创 2022-07-26 19:02:07 · 576 阅读 · 0 评论 -
GitHub上标星千+超火的《腾讯T10+最新最全Android资料大全》,分享整理的PDF版本
GitHub上标星千+超火的《腾讯T10+最新最全Android资料大全》,分享整理的PDF版本原创 2022-07-25 16:49:40 · 408 阅读 · 0 评论 -
面试官:说一下 PendingIntent 和 Intent 的区别
PendingIntent 和 Intent 的区别原创 2022-07-22 16:55:04 · 277 阅读 · 0 评论 -
优雅!优雅!居然可以如此优雅的玩转启动优化?实现优化技术
优雅!优雅!居然可以如此优雅的玩转启动优化?实现优化技术原创 2022-07-21 19:12:40 · 242 阅读 · 0 评论 -
来一起看看抖音对于功耗优化是怎么做的;抖音Android性能优化实战
抖音对于功耗优化是怎么做的;抖音Android性能优化实战原创 2022-07-20 15:35:39 · 1634 阅读 · 0 评论 -
这样学Android,技术层次直接上升一个高度,开刷
这样学Android,技术层次直接上升一个层次原创 2022-07-19 16:16:19 · 151 阅读 · 0 评论 -
精通音视频真的可以为所欲为?懂这些真的太香了
学习音视频原创 2022-07-18 19:15:40 · 179 阅读 · 0 评论 -
阿里面试必问:带你读懂Binder通信机制;拿捏面试官
阿里面试必问:带你读懂Binder通信机制;拿捏面试官原创 2022-07-11 19:37:14 · 292 阅读 · 0 评论 -
腾讯面试必问卡顿优化之卡顿原理全解析与如何快速定位到卡顿问题
1.卡顿到底如何优化?需要掌握什么?2.卡顿的核心原因是什么?那些因素会导致卡顿现象出现?3.如何快速精准的定位到卡顿事故点。4.systrce对于事故原因分析的辅助。5.ChoreographerHelper对于事故阈值的判断。6.卡顿生产案例解析。...原创 2022-07-07 16:44:37 · 408 阅读 · 0 评论 -
面试必问:卡顿前奏 透过渲染看看卡顿,一秒明白卡顿原理
- 屏幕渲染理论与`View`从文本到屏幕的过程探索 - 图像数据从数据到屏幕的过程及`VSYNC`概念 - `Choreographer`编舞者对于帧率及`VSYNC`的协调 - Android的实例数据到图像数据的转换过程 - `Canvas`的数据保存点与`surfacefilnger`如何消费数据 - 渲染全流程梳理及透过渲染分析卡顿主客观因素...原创 2022-07-06 19:48:19 · 240 阅读 · 0 评论 -
突然弹出王者荣耀停止运行,GC超时导致的后台应用崩溃问题分析
突然弹出王者荣耀停止运行,GC超时导致的后台应用崩溃问题分析原创 2022-07-05 15:05:31 · 546 阅读 · 0 评论 -
自己写个App 启动任务框架也不过如此
我们在开发应用的时候,一般都会引入 SDK,而大部分 SDK 都要求我们在 Application 中初始化,当我们引入的 SDK 越来越多,就会出现 Application 越来越长,如果 SDK 的初始化任务相互依赖,还要处理很多条件判断,这时,如果再来个异步初始化,相信大家都会崩溃……...原创 2022-06-16 19:16:41 · 355 阅读 · 1 评论 -
来了,Android 13 适配指南
2022 的Google I/O 发布了 Android 13 beta 2 和 Android 13 Beta 1 国内厂商的设备支持列表,虽然按照惯例, Android 13 应该是年末才发布正式版,但是相信有的开发者已经收到了平台的 Android13 的适配要求,所以本篇也是结合 Oppo 的 Android 13 应用兼容性适配指导 和官方提供的一些文档内容做一个整理测试。...原创 2022-06-09 20:51:19 · 4738 阅读 · 0 评论 -
反射真的很耗时吗?射10万次用时多久?
无论是在面试过程中,还是看网络上各种技术文章,只要提到反射,不可避免都会提到一个问题,反射会影响性能吗?影响有多大?原创 2022-06-01 22:07:36 · 258 阅读 · 0 评论 -
我们为什么要用 flow?
类似播报机情况,每隔一段时间就播报一段相似的内容。假如我们不使用 flow 的情况下,那我们怎么解决这种问题?为什么这么快否决它们?原创 2022-06-01 21:40:40 · 175 阅读 · 0 评论 -
Android 13 还没来 14 的开发代号就已泄露——Upside Down Cake “翻转蛋糕”
近日,Android 开发者在谷歌 Android 开源项目中发现了关于 Android 14 的内部开发代号 —— Upside Down Cake“翻转蛋糕”。一直以来,谷歌都有着采用蛋糕和糖果名称作为新系统代号的“传统”,代号的为“翻转蛋糕”的谷歌 Android 14 也同样继承了安卓版本的传统。随着每个新系统版本的发布,谷歌都会以甜点名称的首字母为每个版本命名,例如 Android 1.5 被命名为“Cupcake”纸杯蛋糕,Android 1.6 被命名为“Donut”甜甜圈,诸如此类。原创 2022-05-05 22:16:37 · 355 阅读 · 0 评论 -
一次不讲武德的 Android 线上 OOM 的排查过程
作者:王晨彦开篇一天,后台统计到线上有大量 OOM 崩溃,小王收到老板的紧急指令,立即排查!小王心想,这还不简单,待我看看崩溃堆栈,分分钟解决。于是小王不慌不忙的打开崩溃后台,一看傻眼了,同样的 OOM,却有几十种不同的堆栈,大到创建 View,小到 new 一个 String。小王差点骂了出来:这 OOM 不讲武德啊!骂完之后,还是得解决问题啊,否则怎么面对老板啊。心路历程正郁闷着,小王突然想起曾经看过性能优化的文章,里面介绍了 Android Studio 中集成的 Profiler.原创 2022-04-20 21:04:56 · 270 阅读 · 0 评论 -
Retrofit + 协程封装,如何优雅的去掉try catch?
作者:ChengTaoRetrofit 2.6.0 版本后对 suspend 方法进行了支持,对使用 kotlin 的开发者来说简直是福音, 但是执行 suspend 方法的时候异常处理仍然是件繁琐的事情,必须显示的执行 try catch, 或者使用 kotlin 自带的异常处理类CoroutineExceptionHandler 进行处理,但是不管哪种方式, 代码都很挫,不够优雅。一、优雅的代码val service = retrofit.create(WanAndroidService::c.原创 2022-04-01 22:17:43 · 686 阅读 · 0 评论 -
Android 组件化场景下多module依赖优雅实践方案
作者:leobert-lan如果没有记错,15年那会Android项目逐步转向使用Gradle构建,时至今日,组件化已经不再是一个新颖的话题。虽然我将这篇文章放在了Gradle分类中,但是我们知道,使用gradle构建的后端项目, 热点聚焦在:实现微服务化,项目是拆开的,决定了依赖库已经是静态jar包,和我们 要讨论的场景是不一致的。所以我们还是在Android领域中讨论这个问题。在各种方案的组件化实施中,一定会将部分功能模块拆分,进行library下沉。于是,就有了处理依赖的场景。相信大家思考过.原创 2021-07-21 17:58:07 · 605 阅读 · 0 评论 -
使用更为安全的方式收集 Android UI 数据流
在 Android 应用中,通常需要从 UI 层收集 Kotlin 数据流,以便在屏幕上显示数据更新。同时,您也会希望通过收集这些数据流,来避免产生不必要的操作和资源浪费 (包括 CPU 和内存),以及防止在 View 进入后台时泄露数据。本文将会带您学习如何使用 LifecycleOwner.addRepeatingJob、Lifecycle.repeatOnLifecycle 以及 Flow.flowWithLifecycle API 来避免资源的浪费;同时也会介绍为什么这些 API 适合作为在 UI原创 2021-07-21 17:37:28 · 282 阅读 · 0 评论 -
那些外包干了三年以上的,废了……
最近也有不少读者来问我:我拿到了两个offer,一个小企业XX职位,一个某大厂的外包岗位,怎么选择啊?我一般都是建议不要去外包,不是我对外包有多大仇恨,也不是有意甩锅外包公司,人家也是企业,也是靠实力看市场来赚钱。曾经也在外包干过三年的我,三年一点成长没有(没精力,天天加班,也没空间提升,因为大家都是干着流水线式码农的工作),不是忙项目就是忙出差,真的废了的一踏糊涂。眼下正值很多毕业生找工作的季节,对于初入社会的职场人来讲,第一份工作特别重要,它一定程度上决定了后面几年的路是怎么样的,是完美入场,还是原创 2021-07-18 22:01:49 · 452 阅读 · 0 评论 -
Android面试中,算法到底重不重要?
前几天和一个粉丝聊面试,他说去年同时拿到了腾讯和阿里的 offer,最后选择了阿里。我了解了下他的面试过程,就一点,无论管是阿里还是腾讯的面试,其中一个占比非常大的权重就是数据结构与算法。其实现在不管面试什么岗位,前端也好,后端也罢,都必须考察算法,这关过了,基本上就没太大问题了。**算法是必考项,**虽然也会相应的考察你技术方向的一些专业技能,比如如果你面试 Android,那 Android 方向的专业技能也是考察很重要的一个方向。算法与数据结构这一关如果你过不去,那你进大厂基本别想了。那么,如原创 2021-07-18 21:43:21 · 332 阅读 · 0 评论 -
okhttp文件上传失败,居然是Android Studio背锅?
作者:不怕天黑一、前言本案例是我本人遇到的真实案例,因查找原因的过程一度让我崩溃,我相信不少人也遇到过相同的问题,故将其记录下来,希望对大家有帮助,本案例使用RxHttp 2.6.4 + OkHttp 4.9.1 + Android Studio 4.2.2版本,当然,如果你使用Retrofit等其它基于OkHttp封装的框架,且用到监听上传进度功能,那么很大概率你也会遇到这个问题,请耐心看完,如果你想直接看到结果,划到文章末尾即可。二、问题描述事情是这样的,有一段文件上传的代码,如下:fun.原创 2021-07-09 22:25:21 · 566 阅读 · 4 评论 -
一套代码,多端运行!聚焦Android跨平台新方向!
“小步快跑、快速迭代” “一套代码、多端运行”这一直是很多开发团队的梦想,美团也一样。他们做了很多跨平台开发框架的尝试:React Native、Weex、PWA 等等,但都没有得到很好的解决,直至遇到 Flutter。Flutter 的优点Flutter 提供了一整套从底层渲染逻辑到上层开发语言的完整方案跨平台高保真高性能……从刚发布开始,Flutter 的热度一路攀升,受到众多开发者的青睐。发展到现在已经有了 阿里闲鱼、今日头条、腾讯 Now 直播 等在内的一众知名大厂案例。通原创 2021-07-05 22:17:21 · 716 阅读 · 12 评论 -
Android自定义View实战:简约风歌词控件
作者:jsyjst前言最近重构了之前的音乐播放器,添加了许多功能,比如歌词,下载功能等。这篇文章就让我们聊聊歌词控件的实现,先上效果图,如果感觉海星,就继续瞧下去!看到这里,估计你对这个控件还有点感兴趣的吧,那接下来就让我们来瞧瞧实现这个歌词控件需要做些什么!一、 歌词解析首先,我们得知道正常的歌词格式是怎样的,大概是长这个样子: 1[ti:喜欢你] 2[ar:.] 3[al:] 4[by:] 5[offset:0] 6[00:00.10]喜欢你 - G.E..原创 2021-07-05 20:33:30 · 373 阅读 · 6 评论 -
2021年5月程序员工资统计,属实惨不忍睹…你拖后腿了吗?
2021年5月全国招收程序员429056人。2021年5月全国程序员平均工资14926元,工资中位数13000元,其中96%的人的工资介于1750元到75000元。城市南京的工资已经连续两个月超过广州了,苏州也快赶上来了。推荐算法工程师才是最赚钱的,图像识别居然跌到了12500,这个专业也是研究生专业了,真是惨不忍睹。还不如转了算了。编程语言比例(市场份额)这个月,c/c++的份额又下降了,java的份额又上升了。看了c/c++超过java没戏了。工资最后在这里我分享一份由多位大佬亲原创 2021-06-26 22:06:49 · 272 阅读 · 0 评论 -
Android开发:如果有选择,千万别去外包!
最近也有不少读者来问我:我拿到了两个offer,一个小企业研发职位,一个某大厂的外包岗位,怎么选择啊?我一般都是建议不要去外包,不是我对外包有多大仇恨,也不是有意甩锅外包公司,人家也是企业,也是靠实力看市场来赚钱。曾经也有读者和我聊过,他在外包公司,三年一点成长没有(没精力,天天加班,也没空间提升,因为大家都是干着流水线式码农的工作),不是忙项目就是忙出差,真的废了的一踏糊涂。眼下正值很多毕业生找工作的季节,对于初入社会的职场人来讲,第一份工作特别重要,它一定程度上决定了后面几年的路是怎么样的,是完美入原创 2021-06-26 21:40:01 · 565 阅读 · 2 评论 -
Jetpack Compose 架构如何选?MVP 、 MVVM 还是 MVI?
本次 I/O 大会上曝出了 Compose 1.0 即将发布的消息,虽然 API 层面已趋于稳定,但真正要在项目中落地还少不了一套合理的应用架构。传统 Android 开发中的 MVP、MVVM 等架构在声明式UI这一新事物中是否还依旧可用呢?本文以一个简单的业务场景为例,试图找出一种与 Compose 最契合的架构模式Sample : Wanandroid SearchApp基本功能:用户输入关键字,在 wanandroid 网站中搜索出相关内容并展示功能虽然简单,但是集合了数据请求、UI展原创 2021-06-26 21:24:04 · 648 阅读 · 0 评论 -
程序员在成长之路上哪些选择最重要?
作者:SkyKai1、去正确的城市发展工作的前几年,我建议去一线大城市发展,大城市的机会更多,上升通道也更丰富,同时薪资待遇也更高。不是每个人都要努力留在大城市,但是在职业发展的前几年去大城市试试,很可能有意想不到的收获。2、不要害怕跳槽有人说:“第一份工作至少要工作三年”,“年轻人不要频繁跳槽,否则会很难找工作”。这些话也许对有些人很有效,也确实有些公司不喜欢招频繁跳槽的人。不过在我面试与入职的所有公司里,没有一家觉得我频繁跳槽(只要你足够强,或者满足用人单位的要求,就没人觉得频繁跳槽是个.原创 2021-06-22 17:00:44 · 331 阅读 · 0 评论 -
为什么高级Android程序员永远不必担心自己的技术过时?
作者:Jacob Comer程序员是吃青春饭的吗?等我们老了,技术过时了,公司有什么理由不裁掉我们,去雇一些既有活力、薪资要求又低的年轻人呢?这个老生常谈的问题困扰着诸多渐入中年的程序员。本文告诉你如何增强自己的核心竞争力,在知识飞速更新的行业中站稳脚跟,跨过“初级工程师”和“高级工程师”之间的鸿沟。我曾在 CS 职业论坛/r/cscareerquestions 上回答了一个问题,该回答描述了我在程序员职业道路早期必须要涉足的几个领域,并就此引申出我为什么认为高级程序员不必担心自己的技术会过时。我.原创 2021-06-19 21:52:14 · 230 阅读 · 0 评论 -
Android面试必备基础知识系列:System、App、Activity启动过程
Android 系统启动过程从系统层看:linux 系统层Android 系统服务层Zygote从开机启动到 Home Launcher:启动 bootloader (小程序;初始化硬件)加载系统内核 (先进入实模式代码再进入保护模式代码)启动 init 进程(用户级进程 ,进程号为1)启动 Zygote 进程(初始化Dalvik VM等)启动 Runtime 进程启动本地服务(system service)启动 HomeLauncher详细解析Android系统完整的启原创 2021-06-15 20:52:07 · 251 阅读 · 6 评论 -
Android开发:从设计者角度看Retrofit原理
作者:Bezier前言通常我不喜欢去写分析源码类的文章,流水线式的分析 枯燥乏味,但读完Retrofit源码后让我有了改变这种想法的冲动~~一般来讲读源码的好处有两点:熟悉代码设计流程,使用过程碰到问题可以更快速解决。说实话仅这一点无法激起我读源码的兴趣,毕竟以正确的姿态使用一个优秀的框架不应该出现这种问题。一个优秀的框架必须要保证易用性、扩展性,所以作者定会引入大量的思考进行设计,如若我们能吸收一二,那何尝不是与作者进行了一次心灵交互呢!今天我将带着我的理解,尝试从设计者的角度分析Re.原创 2021-06-15 20:50:29 · 285 阅读 · 8 评论 -
看完这篇文章,带你彻底理解Android架构
用本篇文章理论知识和架构原则实践了一个 wanAndroid 项目,其中全部采用 kotlin 编写并抛弃了 Rxjava,因为 kotlin 可以完全替代他,github 本项目中汇总了业界知名的架构文章和一些项目帮你彻底理解架构。后续本项目将持续更新,并完善 wanAndorid 的所有功能。还会用 23 种设计模式在项目中实践,彻底理解设计模式在业务场景中的使用。一、什么是架构1.1 架构介绍架构究竟是什么?如何更好的理解架构。我们知道中国文字博大精深可以说从文字的组成就能理解其含义。架构也不例原创 2021-06-11 16:53:26 · 262 阅读 · 6 评论 -
腾讯面试官:如何停止一个正在运行的线程?我一脸懵逼……
目录1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程--异常法4. 在沉睡中停止5. 能停止的线程---暴力停止6. 方法stop()与java.lang.ThreadDeath异常7. 释放锁的不良后果8. 使用return停止线程最后停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。在java中有以下3种方原创 2021-06-07 21:55:05 · 332 阅读 · 6 评论 -
Android开发太卷了!技术总监出来求职,竟然都找不到工作……
就在昨天下午,一个去年我来深圳认识的朋友肖总,之前交流过一些技术问题。问我最近有没有坑,肖总最近在找工作,相当不顺利,到处碰壁。一、大厂出来后,没有一天不焦虑肖总是做移动端出身。之前在oppo呆过3年,后来去平安呆过2年,再后来出来去创业公司做了个小管理,由于后来技术总监跑路了,公司找不到合适的人,让他上去顶位了,title也变成了肖总。早几年,公司发展还不错,那时就打算等公司上市,卖掉期权,就可以实现财富自由了。但是一切并没有那么顺利,从大厂出来后,他说他没有一天不焦虑的,公司的产品主要是秀场直播,盈原创 2021-06-04 21:38:35 · 431 阅读 · 5 评论 -
中级Android研发,面试一般都问些什么?
作者:小肥羊冲冲冲主要收集在面试过程中普遍问到的基础知识(面试收集 主要来自于bilibili 嵩恒 蚂蚁金服等互联网公司)。一、启动启动模式1、standard 标准模式。2、singleTop 栈顶复用模式 。(例如:推送点击消息界面)3、singleTask 栈内复用模式 。(例如:首页)4、singleInstance 单例模式 。(单独位于一个任务栈中,例如:拨打电话界面)App启动流程在Android 层 第一步就是 fork Zygote 进程创建服务端Socke.原创 2021-06-01 22:41:57 · 185 阅读 · 6 评论 -
5道刁钻的Activity生命周期面试题,学完去吊打面试官!
今天我们一起来看五道 Activity 生命周期的面试题,相信看完之后面试官再问到相关的问题,你就能胸有成竹了。A Activity 打开 B Activity 时都有哪些生命周期回调。这道题相信很多同学都有遇到过,简单:A.onPause -> B.onCreate -> B.onStart -> B.onResume -> A.onStopNaive ! 这样回答只是及格,因为仅在 B Activity 的 launchMode 为 standard 或者 B Acti原创 2021-05-25 22:44:41 · 456 阅读 · 6 评论 -
程序员该如何写好自己的简历,一位5年中大厂老哥跟你聊聊
作者:徐公双非本科,某中大厂程序员,加上实习,恰好有 5 年的程序员生涯。从实习到校招,中途踩过不少坑。在职场中有一些自己的心得,今天,跟大家一起来聊聊,程序员应该如何写好自己的一份简历。前段时间,有一些粉丝私信我说,明年我想进大厂,今年想开始准备,有什么建议吗?我回复他的第一句话说,先整理好自己的简历,再进行下一步的计划。为什么这么说呢?第一:整理简历的过程,其实是一次复盘总结。在这过程中,我们会知道自己哪些地方做得好的,哪些做得不好的,这样才能针对性地进行复习。第二:挺多人,简历写不好,.原创 2021-05-24 22:30:41 · 965 阅读 · 4 评论