
android进阶
chuhe1989
作者目前在深圳,13年java转Android开发,在小厂待过,也去过华为,OPPO等,去年四月份进了阿里一直到现在。
国内大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,在这里分享一些学习经验,尤其是思维和方向类的,希望能帮到一些朋友
展开
-
Android 音视频开发实战:视频手势缩放与自动吸附动效实现(纯手写)
1. 功能需求双指缩放视频播放画面,支持设定最小、最大缩放范围双指拖动画面可任意方向移动如果是缩小画面,最后需要在屏幕居中显示,并且需要有动画效果如果是放大画面,有画面边缘在屏幕内的,需要自动吸附到屏幕边缘视频暂停状态下也能缩放2. 实现原理先进行缩放平移。 通过View.getMatrix()获取当前播放画面的Matrix,进行矩阵变换:缩放、平移,改变画面位置和大小,实现播放画面缩放功能。缩放结束后,进行属性动画。 当前画面对应的矩阵变换为mScaleTransMatrix,计算原创 2020-12-03 21:15:12 · 1351 阅读 · 0 评论 -
媳妇看了都说好!Android JetPack组件原理之Lifecycle、LiveData、ViewModel与源码分析技巧
前言Lifecycle、LiveData和ViewModel作为AAC架构的核心,常常被用在Android业务架构中。在京东商城Android应用中,为了事件传递等个性化需求,比如ViewModel间通信、ViewModel访问Activity等等,以及为了架构的扩展性,我们封装了BaseLiveData和BaseViewModel等基础组件,也对Activity、Fragement和ViewHolder进行了封装,以JDLifecycleBaseActivity、LifecycleBaseFragmen原创 2020-12-01 22:01:08 · 1010 阅读 · 0 评论 -
Android面试家常菜:Handler消息机制全家桶一把梭,看完这篇还不懂,请砍我
前言Handler可以说小伙伴们用的非常多了,可以说Handler是支撑整个Android系统运行的基础,本质上Android系统都是由事件驱动的。而处理事件的核心就在于Handler。接下来我们就从简单的使用,到源码分析让你彻彻底底明白Handler的本质。不会再让你发出为什么Looper.loop不会堵塞主线程,Handler是如何切换线程等这类疑惑。作者:Mlx链接:https://juejin.im/post/6866015512192876557简单使用一般是在主线程中实现一个Ha.原创 2020-11-30 16:26:01 · 988 阅读 · 0 评论 -
精囊篇 | 一篇文章把Handler全身摸个遍
0. 前言做 Android 开发肯定离不开跟 Handler 打交道,它通常被我们用来做主线程与子线程之间的通信工具,而 Handler 作为 Android 中消息机制的重要一员也确实给我们的开发带来了极大的便利。可以说只要有异步线程与主线程通信的地方就一定会有 Handler。那么,Handler 的通信机制的背后的原理是什么?本文带你揭晓。注:本文所展示的系统源码基于 Android-27 ,并有所删减。本文首发掘金:Handler 都没搞懂,拿什么去跳槽作者:程序亦非猿1. 重原创 2020-11-27 17:41:39 · 405 阅读 · 0 评论 -
炼狱难度!腾讯Android高级岗:为什么 Activity.finish() 之后 10s 才 onDestroy ?
目录没有及时回调的 onStop/onDestroy从 Activity.finish() 说起是谁指挥着 onStop/onDestroy 的调用?谁让 onStop/onDestroy 延迟了 10s ?没有及时回调的 onStop/onDestroy交流群里碰到一个很有意思的问题,调用 Activity.finish() 之后 10s 才回调 onDestroy() 。 由此产生了一些不可控问题,例如在 onDestroy() 中释放资源不及时,赋值状态异常等等。我之前倒没有遇到过类似原创 2020-11-26 14:36:34 · 864 阅读 · 0 评论 -
深入解析RecyclerView 源码——绘制流程、缓存机制、动画等
前言本文打算对 RecyclerView 做一个详细完整的、重点突出的分析与总结,因为 RecycelrView 源码很长(光 RecyclerView 文件本身就有 13000+ 行),因此文章也会很长,但一通分析下来后会发现,RecyclerView 虽然是 ListView 的加强版,除了在使用方法上类似之外,关键源码上也是非常类似的。RecyclerView 的使用可以参考大神的文章:Android RecyclerView 使用完全解析 体验艺术般的控件RecyclerView 和 Lis原创 2020-11-24 17:29:14 · 534 阅读 · 0 评论 -
腾讯Android高工面试:为什么要使用SparseArray和ArrayMap替代HashMap?
背景在Android开发中,性能优化是一个非常重要的模块,其中数据结构的性能优化是相当重要的,对于常用的HashMap来说,官方推荐我们使用SparseArray和ArrayMap替代它。Java为数据Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类的继承关系如图所示:首先我们来介绍一下HashMap,了解它的优缺点,然后再对比一下其他的数据结构以及为什么要替代.原创 2020-11-23 09:58:01 · 1971 阅读 · 0 评论 -
Android面试必问的Activity,初阶,中高阶问法,你都掌握了吗?(要求熟读并背诵全文)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXs1wGDx-1605843173409)(https://upload-images.jianshu.io/upload_images/24142630-84668ed4a42819ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]Activity是我们常用App开发中最重要的组件,主要用于展示界面和用户交互。本文分为三个部分:Activity源码和常见原创 2020-11-20 11:33:34 · 1627 阅读 · 1 评论 -
字节高工面试灵魂7问:Android架构组件—ViewModel这些知识点一定要掌握!
前言今天跟大家分享的是网友提供的一道字节跳动的面试真题,请看原题:ViewModel 是什么?ViewModel 为什么被设计出来,解决了什么问题?说说ViewModel原理。ViewModel怎么实现自动处理生命周期?为什么在旋转屏幕后不会丢失状态?为什么ViewModel可以跟随Activity/Fragment的生命周期而又不会造成内存泄漏呢?ViewModelScope了解吗?解答ViewModel是什么?ViewModel是MVVM架构的一个层级,用来联系View和mo.原创 2020-11-19 11:13:54 · 2202 阅读 · 1 评论 -
面试官:任务栈?返回栈?启动模式?傻傻分不清楚?年轻人耗子尾汁吧
今天来唠唠 任务栈 和 返回栈 。作者:秉心说TM任务栈?返回栈?关于 任务栈和返回栈,我看了 N 篇博客,说的最清楚的除了 重学安卓 ,那就非 官方文档 莫属了。其实大多时候,很多模糊不清的基本概念,从官方文档都可以轻松的得到你想要的答案。官方文档中这一节的标题叫做 Understand Tasks and Back Stack ,Task 就是我们常说的 任务栈,Back Stack 就是返回栈。任务栈很好理解,Activity 们是存在一个栈结构中的,后进先出,这也很符合实际的使用场景。原创 2020-11-18 14:21:46 · 769 阅读 · 0 评论 -
渣渣二本的辛酸面试之路:从深圳到杭州,从外包到蚂蚁金服,4年小Android的心路历程
写在开头笔者16年于长沙一个普通二本,毕业后去了满地都是机会的深圳。第一份工作是一家外包公司,主要业务是电商和电子支付信息安全方面的。一年后跳槽到华润旗下一个子公司做金融。至今已工作4年。大家都知道,对于跟我一样没有名校背景,也没有大厂出身的程序员来说,面试唯一的加分项就只有某一方面的技术深度了。所以我也建议各位小伙伴也跟我一样,选择一个自己感兴趣的,或者比较自信的方向,不断的钻研深入。众所周知,2020年的冬天非常煎熬,疫情肆虐,大批的互联网公司都在裁员甚至倒闭。年后的金三银四跳槽季竞争愈发激烈,岗.原创 2020-11-17 15:40:37 · 1937 阅读 · 13 评论 -
牛笔了!阿里P8大佬熬夜15天,把所有Android第三方库整理成了PDF
缘起随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有65535,应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。阿里P8大佬每天熬夜到凌晨一两点,花了将近半个月时间将Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应原创 2020-11-16 11:28:39 · 807 阅读 · 12 评论 -
腾讯新闻Android高工二面:说说Android动态换肤实现原理吧
换肤分为动态换肤和静态换肤静态换肤这种换肤的方式,也就是我们所说的内置换肤,就是在APP内部放置多套相同的资源。进行资源的切换。这种换肤的方式有很多缺点,比如, 灵活性差,只能更换内置的资源、apk体积太大,在我们的应用Apk中等一般图片文件能占到apk大小的一半左右。当然了,这种方式也并不是一无是处, 比如我们的应用内,只是普通的 日夜间模式 的切换,并不需要图片等的更换,只是更换颜色,那这样的方式就很实用。动态换肤适用于大量皮肤,用户选择下载,像QQ、网易云音乐这种。它是将皮肤包下载到本地.原创 2020-11-13 14:48:56 · 985 阅读 · 0 评论 -
又是抓脑壳的一天!Thread线程也会OOM?
本文首发掘金:Thread也会OOM吗?作者:究极逮虾户OOM其实是一个比较常见的异常了,但是不知道各位老哥有没有见过这个异常。java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again at java.lang.Thread.nativeCreate(Thread.java) at java.lang.Thread.start(Thread.java:1076) at java.util.concu.原创 2020-11-12 22:19:02 · 521 阅读 · 0 评论 -
源码解析:可能是全网最细的Android 资源加载机制剖析,墙裂建议收藏
前言上一篇文章,讲到了Android中进程的启动和一个Activity的创建到显示流程,现在本篇要分析的是在Android中资源的装载机制,例如字符串资源,图片资源是如何被装载的。这里将从字符串和图片两种类型资源展开分析,同时对于后面所利用的资源装载的内容也会做简单的分析。Resources源码剖析对于资源的装载机制,这里核心的几个类是Resources,ResourcesImpl,AssetManager。Resources算是对于ResourcesImpl的一个代理,Resources的所有调用原创 2020-11-10 22:15:38 · 657 阅读 · 0 评论 -
Android高工面试(难度:四星):为什么不能使用 Application Context 显示 Dialog?
本文首发掘金:为什么不能使用 Application Context 显示 Dialog?作者:秉心说TM目录为什么不能使用 Application Context 显示 Dialog?谁创建了 Token?WMS 是如何拿到 Token 的?WMS 是如何校验 Token 的?为什么不能使用 Application Context 显示 Dialog?在上一篇文章 扒一扒 Context 中遗留了一个问题:为什么不能使用 Application Context 显示 Dialo.原创 2020-11-05 17:01:00 · 985 阅读 · 0 评论 -
字节头条部Android二面:说说Android动态换肤实现原理吧
换肤分为动态换肤和静态换肤静态换肤这种换肤的方式,也就是我们所说的内置换肤,就是在APP内部放置多套相同的资源。进行资源的切换。这种换肤的方式有很多缺点,比如, 灵活性差,只能更换内置的资源、apk体积太大,在我们的应用Apk中等一般图片文件能占到apk大小的一半左右。当然了,这种方式也并不是一无是处, 比如我们的应用内,只是普通的 日夜间模式 的切换,并不需要图片等的更换,只是更换颜色,那这样的方式就很实用。动态换肤适用于大量皮肤,用户选择下载,像QQ、网易云音乐这种。它是将皮肤包下载到本地.原创 2020-11-04 10:50:39 · 356 阅读 · 0 评论 -
泪目!阿里大佬国庆8天花了50个小时,整理出这份18万字Android-360°性能优化实战解析
缘起经过近十年的发展,Android技术优化日新月异,如今Android 10.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS。到了各大厂商手里,改源码、自定义系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。阿里P8大佬,没错还是那个大佬,国庆花了整整一星期时间,原创 2020-11-03 11:40:50 · 973 阅读 · 9 评论 -
Android-高工面试真题:说说你对FPS的理解?如何检测应用的FPS?
本文首发于掘金:面试官:如何监测应用的 FPS ?作者:秉心说TM目录什么是 FPS?从 View.invalidate() 说起承上启下的 “编舞者”如何监测应用的 FPS?最后什么是 FPS ?即使你不知道 FPS,但你一定听说过这么一句话,在 Android 中,每一帧的绘制时间不要超过 16.67ms。那么,这个 16.67ms 是怎么来的呢?就是由 FPS 决定的。FPS,Frame Per Second,每秒显示的帧数,也叫 帧率。Android 设备的 FPS 一般.原创 2020-11-02 17:26:46 · 365 阅读 · 0 评论 -
深入底层 | 字节Android高级岗: Activity间传递对象为什么要序列化?序列化有哪几种方式?它们有什么区别?
前言我们都知道进行Android 开发的时候,跳转到Activity和Fragment的时候,传递对象是通过Intent或者bundle 进行传递。当这个对象没有实现序列化的时候 当你通过Inetnt传递的时候会报红,系统会提示你将这个对象实现序列化。不同 Activity 之间传输数据可以通过 Intent 对象的 putExtra 方法传递,对于 java 的八大基本数据类型(char int float double long short boolean byte)传递是没有问题的,但是如果传递.原创 2020-10-29 21:30:15 · 1155 阅读 · 0 评论 -
朝花夕拾 | 19张图带你深入理解 Android 事件分发机制
注:这是篇讲Android事件分发的老文章,原文转自Kelin,放在现在依然非常经典、易懂。所以翻出来重新转载一波,相信对事件分发理解还不是深入的小伙伴们有很大的帮助。在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Andr.原创 2020-10-28 16:54:19 · 261 阅读 · 0 评论 -
Android高工面试:如果需要实现一个 路由(Router)框架,讲讲你的思路
本文首发公众号:徐公码字Android 开发中,组件化,模块化是一个老生常谈的问题。随着项目复杂性的增长,模块化是一个必然的趋势。除非你能忍受改一下代码,就需要六七分钟的漫长时间。模块化,组件化随之带来的另外一个问题是页面的跳转问题,由于代码的隔离,代码之间有时候会无法互相访问。于是,路由(Router)框架诞生了。目前用得比较多的有阿里的 ARouter,美团的 WMRouter,ActivityRouter 等。今天,就让我们一起来看一下怎样实现一个路由框架。 实现的功能有。基于编译时注.原创 2020-10-27 21:38:45 · 596 阅读 · 0 评论 -
好文推荐 | volatile关键字在Android中到底有什么用?
原文转自郭神公众号:https://mp.weixin.qq.com/s/WtMeB-4sXOYQtvYKUx6c5Q通俗易懂的描述,简单的代码案例,便能轻松为你拿下这个知识点缘起上周六分享了一篇关于Java volatile关键字的文章,发布之后有朋友在留言里指出,说这个关键字没啥用啊,Android开发又不像服务器那样有那么高的并发,老分享这种知识干啥?让我意识到有些朋友对于volatile这个关键字的理解还是有误区的。另外也有朋友留言说,虽然知道volatile关键字的作用,但是想不出在An转载 2020-10-21 21:28:24 · 180 阅读 · 0 评论 -
还在为大厂app抓不到包而犯愁吗?原因很简单,解决方法更简单!
抓不到请求的现象我们经常在wifi设置中 设置代理到我们的pc http代理软件上,多数情况下,此时我们开启的app流量都可以在代理软件上看到,比如charles , fiddler等等。 但是细心的人会发现 某些大厂的app 某些请求 在这些 http代理软件上就是抓不到, 给人的感觉就是 流量没从代理软件走一样。抓不到请求的原因大家都知道 http协议下层是tcp协议,tcp协议都是内置在操作系统里面的,我们最多只能使用tcp协议对外暴露的socket接口来进行编程, 我们是无法修改操作系统本身.原创 2020-10-20 17:46:31 · 1384 阅读 · 0 评论 -
Kotlin 编程核心基石—高阶函数
前言1. 高阶函数有多重要?高阶函数,在 Kotlin 里有着举足轻重的地位。它是 Kotlin 函数式编程的基石,它是各种框架的关键元素,比如:协程,Jetpack Compose,Gradle Kotlin DSL。高阶函数掌握好了,会让我们在读源码的时候“如虎添翼”。本文将以尽可能简单的方式讲解 Kotlin 高阶函数,Lambda 表达式,以及函数类型。在本文的最后,我们将自己动手编写一个 HTML Kotlin DSL。前期准备将 Android Studio 版本升级到最新将我们.原创 2020-10-19 16:19:44 · 556 阅读 · 0 评论 -
解锁!95%的Android程序员做性能优化时,存在的五大误区和两大疑点!
本文翻译自:Busting Android performance myths,作者:Calin Juravle,译文「Meandni」。近年来,社区充斥着关于 Android 性能优化的各种误区,本文本着误区终结者的精神,使用具体的性能检测工具,结合真实案例仔细分析这些情况,并对比它们的测试结果,也会聚焦 Android 开发者平时在编码过程的实际场景,用实际数据告诉你在实际编码之前请,一定要进行必要的性能检测。误区 1:Kotlin 比 Java 更消耗性能Google 云端硬盘团队目前已将其.原创 2020-10-16 17:20:38 · 349 阅读 · 0 评论 -
图文+视频双管齐下,带你全面彻底理解Retrofit源码,学完还不懂请砍我!【墙裂建议收藏】
缘起最近回归看了一下Retrofit的源码,主要是因为项目接入了协程,所以想研究一下Retorift是如何支持协程的。Retrofit是在Version 2.6.0开始支持协程的,所以本篇文章有关Retrofit的源码都是基于2.6.0的。温馨提示,如果有Retrofit的源码阅读经验,阅读这篇文章将会轻松很多。时间充裕也可结合视频学习Retrofit源码:https://www.bilibili.com/video/BV1tz4y1Z7AK作者:午后一小憩链接:https://juejin..原创 2020-09-25 22:17:11 · 282 阅读 · 0 评论