![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
移动开发
文章平均质量分 92
让开,我要吃人了
这个作者很懒,什么都没留下…
展开
-
谈谈对Android音视频开发的探究
作者:会飞的金鱼在日常生活中,视频类应用占据了我们越来越多的时间,各大公司也纷纷杀入这个战场,不管是抖音、快手等短视频类型,虎牙、斗鱼等直播类型,腾讯视频、爱奇艺、优酷等长视频类型,还是Vue、美拍等视频编辑美颜类型,总有一款适合你。未来随着5G普及以及网络资费的下降,音视频的前景是非常广阔的。但是另一方面,无论是音视频的编解码和播放器、视频编辑和美颜的各种算法,还是视频与人工智能的结合(AI剪片、视频修复、超清化等),它们都涉及了方方面面的底层知识,学习曲线比较陡峭,门槛相对比较高,所以也造成了目.转载 2022-03-30 14:07:09 · 366 阅读 · 0 评论 -
大龄Android 开发们最担忧的事儿,太难了~
程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险。30岁,是一个程序员伤不起的年龄。明天,何去何从?一.30岁现象在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把。很明显嘛,权力过期作废,再不捞就要退休了,没有机会了。在程序员的圈子里,也有一个30岁现象。当然,如果你有铁饭碗,比如在国企或政府机关,那你是无法理解底层劳动人民的感受的。同时也要恭喜你成为体制内的一员,可以一直干到退休无忧。30岁现象人人都明白,但要给出一个定义并不容易。列举几个表现原创 2022-03-29 21:24:48 · 334 阅读 · 0 评论 -
Android MVC , MVP, MVVM 架构案例学习
作者:苍耳叔叔前言主要介绍一下 MVC, MVP 以及 MVVM 架构,至于 MVI 后面会单独介绍。这些 MVX 的目的都是为了将业务和视图分离,松耦合,作为 Android 程序猿,大多不陌生了。一个 App 离不开 Model 和 View 这两个角色, Model 决定了 App 的数据,而 View 决定怎么向用户展示这些数据,大多框架或组件基本上都是用来处理这两者之间的交互关系的。因此一个 App 的架构需要处理两个任务:更新 Model —— 如何处理 View actio.转载 2022-03-29 14:03:13 · 439 阅读 · 0 评论 -
Android无障碍代理的那些事
作者:Petterp本篇将聊一聊什么是无障碍代理,及结合实际场景,分享一下我们对于无障碍代理的使用,并且如何让其更加易用。什么是无障碍代理?当用户在无障碍模式下时,用户在界面上与 View 的所有操作,都会触发相应的无障碍事件,这些事件最终由 无障碍服务处理 ,其会利用这些事件中的信息生成反馈和提示。自Android1.6(Api-4)开始,Android提供了相应的无障碍事件的代理扩展,我们可以通过实现相应的无障碍代理类(AccessibilityDelegate 或 Accessibility.转载 2022-03-28 14:04:01 · 7976 阅读 · 0 评论 -
Android中Bitmap的加载和Cache
作者:PanicLin简介由于Bitmap的特殊性以及Android对单个应用所施加的内存限制,比如16MB,导致加载Bitmap时很容会议出现内存溢出。如何高效加载Bitmap是一个很重要也容易被开发者忽视的问题。Android中缓存策略是一个通用的思想,实际开发中经常需要用到Bitmap做缓存。通过缓存策略我么不需要每次都从网络上请求图片或者从存储设备中加载图片。目前比较常用的缓存策略时LruCache和DiskLruCache,其中LruCache常被用作内存缓存,而DiskLruCache.转载 2022-03-27 20:47:13 · 204 阅读 · 0 评论 -
最新T3出行 Android 岗面经分享:面试真题+经验总结~
作者:小莫前言大家期望已久的金三银四面试季的九月已经到来,我特此前来分享一个我刚刚在滴滴的面试经历。如果你正好要面试可以来来看看一面:1.首先是自我介绍2.从笔试的算法题入手,详细讲讲自己的思路。然后分析一下时间,空间复杂度提出优化和改进的方法3.再加一道手撕算法题4.考察了http,tcp等计算机网络知识5.涉及了一小部分的操作系统6.常见的数据结构包括堆栈队列等结构java中对应的类:从array,arrayList,linkedList,Queue, PriorityQ.原创 2022-03-26 20:55:30 · 3010 阅读 · 0 评论 -
Android 音视频强势崛起,我们该如何快速入门音视频技术?
5G时代到来对人们的影响几何?从历史来看,2G打开了了移动互联网天下,3G带来了即时通信,诞生了QQ 微信等巨头,4G 带来了短视频兴起。字节跳动等公司崛起。2 3 4G的出现促成了移动互联网10年繁荣。而5G的出现,也会促成至少10年音视频行业的繁荣。所以,做音视频研发的前景是广阔的,对于很早看出音视频前景的同学来说,已经开始通过各种渠道搜集相关的学习资料,及早的投入音视频研发的队伍。作为Android开发者的我们到底应不应该上音视频这条船?接下来一起分析下。大趋势从未来的大趋势来看,随原创 2022-03-25 16:54:38 · 99 阅读 · 0 评论 -
BlockCanary源码解析
作者:用优美的姿势去写代码BlockCanary源码解析在讲解BlockCanary源码之前,我们还是需要将一些前置的知识点。本文不讲Handler的原理了,不太懂的同学自己去百度看一下吧。什么是卡顿在讲解卡顿问题之前,我们需要讲一下帧率这个概念。帧率是以帧称为单位的位图图像连续出现在显示器上的频率。我将一个例子,电影播放。电影其实就是很多张照片(帧)的一个集合,那为什么看起来是一个连续的过程呢?因为电影每一秒出现过的图片不止一张。实际上电影一般一秒出现的图片张数会在20-30张。假设电影一秒出.转载 2022-03-25 14:15:18 · 151 阅读 · 0 评论 -
美团Android 岗3次挂了,这次终于成功拿下
前言最近在网上找了不少面试相关的学习文档准备面试!如果您觉得里面的问题不错,在面试准备的时候学习看看.这次终于拿下了这个心仪很久的岗位有记录面试题, 希望对你们有帮助~! 少走一些弯路! 请看答案在最下面!!美团一面:技术面手写算法题。一共有几个,面试官会随机抽一个作为题目。给出一个序列包含n个正整数的序列A,然后给出一个正整数x,你可以对序列进行任意次操作的,每次操作你可以选择序列中的一个数字,让其与x做按位或运算。你的目的是让这个序列中的众数出现的次数最多。请问众数最多出现多少次?.原创 2022-03-24 21:16:15 · 129 阅读 · 0 评论 -
在 Compose 中使用 Navigation 导航,看这一篇就够了~
作者:黄林晴前言大约在一年半前,我发布了Compose的第一篇文章 Jetpack Compose开篇 之 HelloWorld,连我自己也没想到,这一年半的时间中我竟再也没有看过Compose…, 如今Compose已经发布了稳定版本,还没学会Compose让我的头发又白了许多~使用Navigation在Compose中导航如果你之前不喜欢Android提倡的”单Activity“应用,那么在Compose中相信你会慢慢习惯的~在此示例中,有两个页面PageOne和PageTwo,首先来看P.转载 2022-03-24 13:47:47 · 2537 阅读 · 0 评论 -
哪怕不学Gradle,这些常见操作,你也值得掌握
作者:Petterp引言Gradle 是每个 Android 同学都逃不开的一个话题。你是否看到别人的 Gradle 文件干净又卫生?而自己的又是一团乱麻不用怕,本篇将结合我的开发日常,将一些常用的操作分享出来,希望可以帮到像我一样不怎么会[玩]Gradle 的同学,相信会对大家有所帮助。模板代码提取这是最基础的操作了,对于一个普通 model.gradle ,默认的配置如下:如果我们每个 model 都这样写,那岂不是很麻烦,那么让我们提取通用代码:优化步骤新建一个 gradle .转载 2022-03-23 14:53:43 · 116 阅读 · 0 评论 -
面试官问:Handler内存泄露的场景,别就只知道静态内部类&弱引用……
我们在编码的过程中,如果出现疏忽或错误,造成程序未能释放已经不再使用的内存,就会导致内存泄露,随着泄露内存的增长,最终一定会导致 OOM。在 JVM 中,对对象的回收 GC 是基于可达性分析。简单来说,就是从 GC Root 出发,被引用的对象均被标记为存活,而没有被引用的对象,则被标记为垃圾,即可以被 GC 回收。那么如果出现内存泄露,可以理解为就是一个长生命周期的对象,引用了短生命周期的对象,导致短生命周期的对象,在生命周期结束后,仍然得不到回收,最终导致内存泄露。而 Handler 若是使用不当原创 2022-03-22 20:50:27 · 186 阅读 · 0 评论 -
Android 组件化架构设计从原理到实战
作者:captain_p转载地址:https://juejin.cn/post/7068542759027605534为什么需要组件化小项目是不需要组件化的。当一个项目有数十个人开发,编译项目要花费10分钟,修改一个bug就可能会影响到其他业务,小小的改动就需要进行回归测试,如果是这种项目,那么我们需要进行组件化了组件化和模块化在技术架构演进的过程一定是先出现模块化后出现组件化,因为组件化就是解决了模块化的问题。模块化架构创建一个 Project 后可以创建多个 Module,这个 Mod.转载 2022-03-22 13:37:38 · 296 阅读 · 0 评论 -
关于ViewModel的这几个问题,你都知道吗?
前言作为一名Android开发者,如果你熟悉MVVM架构,熟悉Jetpack组件,那么相信你肯定使用过ViewModel。正如它的名字一样,它是Google推出的一个类,方便我们实现MVVM架构中的ViewModel层。我们在其中处理View层所需的数据,然后在特定条件下通知View层进行UI更新。正如官方所介绍:ViewModel 类以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。我们抓一下这句话的重点:注重生命周期的方式:原创 2022-03-21 18:00:13 · 2913 阅读 · 0 评论 -
又一份牛逼的Android高级研发面试宝典问世了
很多想进大厂的Android小伙伴都在问,该怎么备战 2022年春招?为此我专门找了一份《大厂Android高级研发面试宝典》分享给大家,内容涵盖:分字jetpack原理性知识、热修复、性能调优、组件化、Flutter、设计模式及开源框架、源码解析等等…质量非常高!!!不管最近要不要去面试,建议大家都保存一份!!学完之后不论是厂内晋升还是跳槽涨薪都不在话下!内容如下:Android高频面试之必考Java基础Android面试之必问Android基础Android面试之必问高级知识点Andro原创 2022-03-21 15:09:03 · 1609 阅读 · 0 评论 -
细数SharedPreferences的5大缺陷及ANR原因
我们经常使用的SharedPreferences其实是存在很多缺陷的,主要表现在占用内存getValue时可能导致ANR不支持多进程不支持全量更新commit或apply都可能导致ANR以下参考安卓源码的基础上,使用大白话和部分代码片段和大家一起探讨分享。占用内存final class SharedPreferencesImpl implements SharedPreferences { ...... //构造方法 SharedPreferenc转载 2022-03-19 20:53:32 · 571 阅读 · 0 评论 -
Android 面经总结:5天面5家,已收三家Offer~
作者:涛哥前言一年一度的金三银四跳槽面试季已过半,还好在期间内赶上了这趟车。我原本在一家中型的互联网公司从事Android 开发,回想一下在这家公司已做了三年了,所实话真有点不舍。但自己想蹭着年轻出去多学点东西,于是在今年的三月初就果断了选择离职。离职后给了自己一个短暂的休息时间。经过完那段休息时间后,就开始了自己的面试复习的日子,在家闭关修炼一个多星期后,就开始投简历了。简历投了三天,收到面试通知的差不多有十几公司左右,但最终我只选择了5家条件比较好的公司进行面试,这5家公司从面试到收到Of.原创 2022-03-18 20:51:57 · 1532 阅读 · 0 评论 -
Android 性能分析工具介绍
本文作者:The Performance,原文发布于:Android Performance。原文首发于知识星球:The Performance。正文Paul Graham 在其著作 <黑客与画家> 中断言:“不同语言的执行效率差距正变得越来越大,所以性能分析器(profiler)将变得越来越重要。目前,性能分析并没有受到重视。许多人好像仍然相信,程序运行速度提升的关键在于开发出能够生成更快速代码的编译器。代码效率与机器性能的差距正在不断加大,我们将会越来越清楚地看到,应用软件运行速度原创 2022-03-18 14:00:26 · 1418 阅读 · 0 评论 -
Android 开发太难了:总听说的AGP,背后到底做了什么?
作者:九心前言故事的开始是这样的。之前阅读《Android开发高手课》的时候,里面启动优化一栏有讲到 systrace + 函数插桩 是不错的卡顿排查方式。主要方式就是通过 Transform + Asm,相信是大家的老熟人了。使用其中的 Demo 进行学习的时候,发现将 AGP(Android Gradle Plugin,Android Gradle 打包插件) 升级到 4.0.0 以后,Demo 就不管用了。分析了一下 Demo,发现代码中没有使用直接注册 Transform 的方式进行.转载 2022-03-17 14:19:50 · 388 阅读 · 1 评论 -
扒光 Handler,赶紧来瞧一瞧
作者:HenAndroid典型的生产者-消费者模式。 Android跨进程要掌握的是Binder, 而同一进程中最重要的应该就是Handler 消息通信机制了。我这么说,大家不知道是否认同,如果认同,还希望能给一个关注哈。Handler 是什么???Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的[函数]即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作.转载 2022-03-16 14:53:21 · 119 阅读 · 0 评论 -
Android JetPack LifeCycle源码分析
作者:白瑞德简介Lifecycle 是一个类,用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。官方对Lifecycle的定义非常简单,它的作用也很明确:存储具有生命周期的组件的生命周期状态,并且作为一个被观察者,允许其他组件保持对生命周期状态的观察。Lifecycle组件的合理使用可赋予我们的代码显著的优点:无需在组件里生命周期方法里放置大量代码,即可实现对组件生命周期的监听的处理,再实现解耦的同时,让代码更有条理且精简易维护.转载 2022-03-11 13:42:28 · 284 阅读 · 0 评论 -
解读 GraphicBuffer 之 Framework 层
作者:YuLong一 前言GraphicBuffer 是 SurfaceFlinger 中一块重要的内容, 它涉及到了我们应用程序的数据是如何和SurfaceFlinger进行传递的。在介绍 GraphicBuffer 之前,我们先提出这样一个问题:我们应用程序的界面数据,是如何传递给 SurfaceFlinger 进行合成和显示的。是 Binder 吗?显然不是,Binder 传递不了这么大的数据。那么是共享内存吗,早期的界面数据的确是通过这种方式传递的,但是那已经是很早之前了。前面我们介绍了.转载 2022-03-10 14:28:06 · 333 阅读 · 0 评论 -
Android JetPack LiveData源码解析
作者:白瑞德简介和使用官方对LiveData的定义是:一种可观察的数据存储器类;具有以下优点:采用观察者模式,无需在数据发生变化时更新界面便能确保界面符合数据状态;具有生命周期感知能力,不需要手动处理生命周期,也不会因Activity停止而导致崩溃;观察者绑定到了Lifecycle对象,会自动进行清理,不会发生内存泄露; 同一个观察者只能和一个Lifecycle绑定;数据始终维持最新的状态,生命周期变为非活跃状态,它会在再次变为活跃状态时展示最新的数据(当Activity生命周期发生变化,.转载 2022-03-09 15:26:20 · 191 阅读 · 0 评论