自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(131)
  • 收藏
  • 关注

转载 谈谈对Android音视频开发的探究

作者:会飞的金鱼在日常生活中,视频类应用占据了我们越来越多的时间,各大公司也纷纷杀入这个战场,不管是抖音、快手等短视频类型,虎牙、斗鱼等直播类型,腾讯视频、爱奇艺、优酷等长视频类型,还是Vue、美拍等视频编辑美颜类型,总有一款适合你。未来随着5G普及以及网络资费的下降,音视频的前景是非常广阔的。但是另一方面,无论是音视频的编解码和播放器、视频编辑和美颜的各种算法,还是视频与人工智能的结合(AI剪片、视频修复、超清化等),它们都涉及了方方面面的底层知识,学习曲线比较陡峭,门槛相对比较高,所以也造成了目.

2022-03-30 14:07:09 366

原创 大龄Android 开发们最担忧的事儿,太难了~

程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险。30岁,是一个程序员伤不起的年龄。明天,何去何从?一.30岁现象在官场上,曾经有一个59岁现象,就是官员们会在59岁时,会使劲捞上一把。很明显嘛,权力过期作废,再不捞就要退休了,没有机会了。在程序员的圈子里,也有一个30岁现象。当然,如果你有铁饭碗,比如在国企或政府机关,那你是无法理解底层劳动人民的感受的。同时也要恭喜你成为体制内的一员,可以一直干到退休无忧。30岁现象人人都明白,但要给出一个定义并不容易。列举几个表现

2022-03-29 21:24:48 334

转载 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

转载 Android无障碍代理的那些事

作者:Petterp本篇将聊一聊什么是无障碍代理,及结合实际场景,分享一下我们对于无障碍代理的使用,并且如何让其更加易用。什么是无障碍代理?当用户在无障碍模式下时,用户在界面上与 View 的所有操作,都会触发相应的无障碍事件,这些事件最终由 无障碍服务处理 ,其会利用这些事件中的信息生成反馈和提示。自Android1.6(Api-4)开始,Android提供了相应的无障碍事件的代理扩展,我们可以通过实现相应的无障碍代理类(AccessibilityDelegate 或 Accessibility.

2022-03-28 14:04:01 8150

转载 Android中Bitmap的加载和Cache

作者:PanicLin简介由于Bitmap的特殊性以及Android对单个应用所施加的内存限制,比如16MB,导致加载Bitmap时很容会议出现内存溢出。如何高效加载Bitmap是一个很重要也容易被开发者忽视的问题。Android中缓存策略是一个通用的思想,实际开发中经常需要用到Bitmap做缓存。通过缓存策略我么不需要每次都从网络上请求图片或者从存储设备中加载图片。目前比较常用的缓存策略时LruCache和DiskLruCache,其中LruCache常被用作内存缓存,而DiskLruCache.

2022-03-27 20:47:13 204

原创 最新T3出行 Android 岗面经分享:面试真题+经验总结~

作者:小莫前言大家期望已久的金三银四面试季的九月已经到来,我特此前来分享一个我刚刚在滴滴的面试经历。如果你正好要面试可以来来看看一面:1.首先是自我介绍2.从笔试的算法题入手,详细讲讲自己的思路。然后分析一下时间,空间复杂度提出优化和改进的方法3.再加一道手撕算法题4.考察了http,tcp等计算机网络知识5.涉及了一小部分的操作系统6.常见的数据结构包括堆栈队列等结构java中对应的类:从array,arrayList,linkedList,Queue, PriorityQ.

2022-03-26 20:55:30 3010

原创 Android 音视频强势崛起,我们该如何快速入门音视频技术?

5G时代到来对人们的影响几何?从历史来看,2G打开了了移动互联网天下,3G带来了即时通信,诞生了QQ 微信等巨头,4G 带来了短视频兴起。字节跳动等公司崛起。2 3 4G的出现促成了移动互联网10年繁荣。而5G的出现,也会促成至少10年音视频行业的繁荣。所以,做音视频研发的前景是广阔的,对于很早看出音视频前景的同学来说,已经开始通过各种渠道搜集相关的学习资料,及早的投入音视频研发的队伍。作为Android开发者的我们到底应不应该上音视频这条船?接下来一起分析下。大趋势从未来的大趋势来看,随

2022-03-25 16:54:38 99

转载 BlockCanary源码解析

作者:用优美的姿势去写代码BlockCanary源码解析在讲解BlockCanary源码之前,我们还是需要将一些前置的知识点。本文不讲Handler的原理了,不太懂的同学自己去百度看一下吧。什么是卡顿在讲解卡顿问题之前,我们需要讲一下帧率这个概念。帧率是以帧称为单位的位图图像连续出现在显示器上的频率。我将一个例子,电影播放。电影其实就是很多张照片(帧)的一个集合,那为什么看起来是一个连续的过程呢?因为电影每一秒出现过的图片不止一张。实际上电影一般一秒出现的图片张数会在20-30张。假设电影一秒出.

2022-03-25 14:15:18 151

原创 美团Android 岗3次挂了,这次终于成功拿下

前言最近在网上找了不少面试相关的学习文档准备面试!如果您觉得里面的问题不错,在面试准备的时候学习看看.这次终于拿下了这个心仪很久的岗位有记录面试题, 希望对你们有帮助~! 少走一些弯路! 请看答案在最下面!!美团一面:技术面手写算法题。一共有几个,面试官会随机抽一个作为题目。给出一个序列包含n个正整数的序列A,然后给出一个正整数x,你可以对序列进行任意次操作的,每次操作你可以选择序列中的一个数字,让其与x做按位或运算。你的目的是让这个序列中的众数出现的次数最多。请问众数最多出现多少次?.

2022-03-24 21:16:15 130

转载 在 Compose 中使用 Navigation 导航,看这一篇就够了~

作者:黄林晴前言大约在一年半前,我发布了Compose的第一篇文章 Jetpack Compose开篇 之 HelloWorld,连我自己也没想到,这一年半的时间中我竟再也没有看过Compose…, 如今Compose已经发布了稳定版本,还没学会Compose让我的头发又白了许多~使用Navigation在Compose中导航如果你之前不喜欢Android提倡的”单Activity“应用,那么在Compose中相信你会慢慢习惯的~在此示例中,有两个页面PageOne和PageTwo,首先来看P.

2022-03-24 13:47:47 2539

转载 哪怕不学Gradle,这些常见操作,你也值得掌握

作者:Petterp引言Gradle 是每个 Android 同学都逃不开的一个话题。你是否看到别人的 Gradle 文件干净又卫生?而自己的又是一团乱麻不用怕,本篇将结合我的开发日常,将一些常用的操作分享出来,希望可以帮到像我一样不怎么会[玩]Gradle 的同学,相信会对大家有所帮助。模板代码提取这是最基础的操作了,对于一个普通 model.gradle ,默认的配置如下:如果我们每个 model 都这样写,那岂不是很麻烦,那么让我们提取通用代码:优化步骤新建一个 gradle .

2022-03-23 14:53:43 116

原创 面试官问:Handler内存泄露的场景,别就只知道静态内部类&弱引用……

我们在编码的过程中,如果出现疏忽或错误,造成程序未能释放已经不再使用的内存,就会导致内存泄露,随着泄露内存的增长,最终一定会导致 OOM。在 JVM 中,对对象的回收 GC 是基于可达性分析。简单来说,就是从 GC Root 出发,被引用的对象均被标记为存活,而没有被引用的对象,则被标记为垃圾,即可以被 GC 回收。那么如果出现内存泄露,可以理解为就是一个长生命周期的对象,引用了短生命周期的对象,导致短生命周期的对象,在生命周期结束后,仍然得不到回收,最终导致内存泄露。而 Handler 若是使用不当

2022-03-22 20:50:27 186

转载 Android 组件化架构设计从原理到实战

作者:captain_p转载地址:https://juejin.cn/post/7068542759027605534为什么需要组件化小项目是不需要组件化的。当一个项目有数十个人开发,编译项目要花费10分钟,修改一个bug就可能会影响到其他业务,小小的改动就需要进行回归测试,如果是这种项目,那么我们需要进行组件化了组件化和模块化在技术架构演进的过程一定是先出现模块化后出现组件化,因为组件化就是解决了模块化的问题。模块化架构创建一个 Project 后可以创建多个 Module,这个 Mod.

2022-03-22 13:37:38 296

原创 关于ViewModel的这几个问题,你都知道吗?

前言作为一名Android开发者,如果你熟悉MVVM架构,熟悉Jetpack组件,那么相信你肯定使用过ViewModel。正如它的名字一样,它是Google推出的一个类,方便我们实现MVVM架构中的ViewModel层。我们在其中处理View层所需的数据,然后在特定条件下通知View层进行UI更新。正如官方所介绍:ViewModel 类以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。我们抓一下这句话的重点:注重生命周期的方式:

2022-03-21 18:00:13 2913

原创 又一份牛逼的Android高级研发面试宝典问世了

很多想进大厂的Android小伙伴都在问,该怎么备战 2022年春招?为此我专门找了一份《大厂Android高级研发面试宝典》分享给大家,内容涵盖:分字jetpack原理性知识、热修复、性能调优、组件化、Flutter、设计模式及开源框架、源码解析等等…质量非常高!!!不管最近要不要去面试,建议大家都保存一份!!学完之后不论是厂内晋升还是跳槽涨薪都不在话下!内容如下:Android高频面试之必考Java基础Android面试之必问Android基础Android面试之必问高级知识点Andro

2022-03-21 15:09:03 1609

转载 细数SharedPreferences的5大缺陷及ANR原因

我们经常使用的SharedPreferences其实是存在很多缺陷的,主要表现在占用内存getValue时可能导致ANR不支持多进程不支持全量更新commit或apply都可能导致ANR以下参考安卓源码的基础上,使用大白话和部分代码片段和大家一起探讨分享。占用内存final class SharedPreferencesImpl implements SharedPreferences { ...... //构造方法 SharedPreferenc

2022-03-19 20:53:32 571

原创 Android 面经总结:5天面5家,已收三家Offer~

作者:涛哥前言一年一度的金三银四跳槽面试季已过半,还好在期间内赶上了这趟车。我原本在一家中型的互联网公司从事Android 开发,回想一下在这家公司已做了三年了,所实话真有点不舍。但自己想蹭着年轻出去多学点东西,于是在今年的三月初就果断了选择离职。离职后给了自己一个短暂的休息时间。经过完那段休息时间后,就开始了自己的面试复习的日子,在家闭关修炼一个多星期后,就开始投简历了。简历投了三天,收到面试通知的差不多有十几公司左右,但最终我只选择了5家条件比较好的公司进行面试,这5家公司从面试到收到Of.

2022-03-18 20:51:57 1532

原创 Android 性能分析工具介绍

本文作者:The Performance,原文发布于:Android Performance。原文首发于知识星球:The Performance。正文Paul Graham 在其著作 <黑客与画家> 中断言:“不同语言的执行效率差距正变得越来越大,所以性能分析器(profiler)将变得越来越重要。目前,性能分析并没有受到重视。许多人好像仍然相信,程序运行速度提升的关键在于开发出能够生成更快速代码的编译器。代码效率与机器性能的差距正在不断加大,我们将会越来越清楚地看到,应用软件运行速度

2022-03-18 14:00:26 1418

转载 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

转载 Android JetPack LifeCycle源码分析

作者:白瑞德简介Lifecycle 是一个类,用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。官方对Lifecycle的定义非常简单,它的作用也很明确:存储具有生命周期的组件的生命周期状态,并且作为一个被观察者,允许其他组件保持对生命周期状态的观察。Lifecycle组件的合理使用可赋予我们的代码显著的优点:无需在组件里生命周期方法里放置大量代码,即可实现对组件生命周期的监听的处理,再实现解耦的同时,让代码更有条理且精简易维护.

2022-03-11 13:42:28 284

转载 解读 GraphicBuffer 之 Framework 层

作者:YuLong一 前言GraphicBuffer 是 SurfaceFlinger 中一块重要的内容, 它涉及到了我们应用程序的数据是如何和SurfaceFlinger进行传递的。在介绍 GraphicBuffer 之前,我们先提出这样一个问题:我们应用程序的界面数据,是如何传递给 SurfaceFlinger 进行合成和显示的。是 Binder 吗?显然不是,Binder 传递不了这么大的数据。那么是共享内存吗,早期的界面数据的确是通过这种方式传递的,但是那已经是很早之前了。前面我们介绍了.

2022-03-10 14:28:06 333

转载 Android JetPack LiveData源码解析

作者:白瑞德简介和使用官方对LiveData的定义是:一种可观察的数据存储器类;具有以下优点:采用观察者模式,无需在数据发生变化时更新界面便能确保界面符合数据状态;具有生命周期感知能力,不需要手动处理生命周期,也不会因Activity停止而导致崩溃;观察者绑定到了Lifecycle对象,会自动进行清理,不会发生内存泄露; 同一个观察者只能和一个Lifecycle绑定;数据始终维持最新的状态,生命周期变为非活跃状态,它会在再次变为活跃状态时展示最新的数据(当Activity生命周期发生变化,.

2022-03-09 15:26:20 191

原创 自定义View:Bitmap和Drawable

一、Bitmap和Drawable的含义Bitmap中文解释为位图,而本质上Bitmap是图片像素点的集合。Drawable本质也不是一张图,而是类似于View的图片载荷窗体。二者其实是没有所谓的互转关系的,因为它们本质就是不同的二个东西,它们其实是生产关系,Bitmap可以生产Drawable,Drawable可以生产Bitmap。二、Bitmap生产Drawablektx有现成的封装的方法:val bitmap = Bitmap.createBitmap(50, 50, Bit

2022-02-10 21:34:22 1197 1

原创 深入理解StateFlow

开篇flow api 已经慢慢被谷歌列为数据流的首选,可以见到官网的数据流篇都慢慢偏向于flow api,虽然LiveData等数据流类型已经深入开发者观念中,但是flow api也正慢慢的崛起出自己的市场。本篇讲的StateFlow是flow api中的一个更偏向于应用层的api,功能也非常和LiveData相似,那么为什么要出一个和LiveData类似的东西的,因为LiveData天生就引入了生命周期相关的概念,从设计角度出发,其实是耦合了生命周期这部分,所以现在才另起炉灶,出现了StateFlow

2022-02-10 20:17:43 1456 1

原创 Android技能树点亮计划-多module项目仓库设计

背景在Android App的成长过程中,随着包功能越来越多,团队越来越复杂,为了保证功能的清晰和可维护性、增加模块的内聚性,减小git推代码冲突的风险等等,App的开发模式会慢慢变成集成开发模式集成开发模式每个人负责一个或者多个模块,模块之间相互隔离,独立进行打包和升级,最后以远端依赖的方式集成到App中进行打包问题在采用集成开发模式的时候会碰到一个问题,因为主App都是通过implement 远端的依赖进行打包的,当在本地开发的时候,如何对模块的本地代码进行调试呢?一般我们的做法

2022-02-08 21:27:56 1265 2

原创 Jetpack新成员,App Startup

介绍App Startup是一个可以用于加速App启动速度的一个库。出现的原因以前初始化第三方库会在Application的onCreate中。class MyApplication : Application() { override fun onCreate() { super.onCreate() LitePal.initialize(this) AAA.initialize(this) BBB.initiali

2022-02-08 17:29:55 1414 2

原创 Databinding+LiveData轻松实现无重启换肤

最近项目需要用到无重启动态换肤功能,本来打算用github上star最多的 Android-skin-support但仔细一看发现太复杂而且2年没维护+大量issues没解决,最终放弃经过探索,发现 Databinding+LiveData 能低成本实现无重启换肤无重启动态换肤(不需要recreate()) 无需制作皮肤包 无额外依赖(Databinding+LiveData本身几乎开发必备) 低侵入性 AppCompat和Material组件默认支持(少量属性需要额外支持或适配) 自

2022-02-07 21:45:27 948

原创 Android 如何拦截用户频繁操作(比如点击事件)

前言在 Android 界面开发中,频繁操作是一个需要注意的点。 频繁操作: 频繁点击一个按钮,或者同时点击多个item,等产生的冲突情况。解决方案场景1假设在 Activiyt A 界面有一个 按钮 T ,点击T 将跳转到 Activity B.void handleClick(){ Intent intent = new Intent(ActivityA.this,ActivityB.class); startActivity(intent);}但是用户很可能

2022-02-07 20:51:51 362 2

原创 面试官:知道 Flutter 生命周期?下周来入职

作为一名移动端开发工程师,刚接触 Flutter 的时候,一定会有这样的疑问:Flutter 的生命周期是怎么样的?是如何处理生命周期的?我的 onCreate()[Android] 在哪里?viewDidLoad()[iOS] 呢? 我的业务逻辑应该放在哪里处理?初始化数据呢?希望看了这篇文章后,可以对你有一点小小的帮助。安卓如果你是一名安卓开发工程师,那么对于 Activity 生命周期肯定不陌生onCreate onStart onResume onPause onStop on

2022-01-26 20:57:30 1414

原创 QQ群头像 微信群头像 多图合并框架实现

现在多数app里面加入聊天已经是一个非常普遍的现象了,而微信和qq则是通讯领域的鼻祖了。如果产品经理在考虑做聊天设计的时候,多数会参考。常常你会听到,你看微信和qq都是这么做的,你就这么来吧,虽然心理有一万个不痛快,但谁叫我们是有一个有追求的程序员呢。所以产品的要求是实现类似微信的群头像。类似如下多图合并作为程序员,首先会评估下工作量吧。在产品眼里,就是把图片合成一起嘛,有啥难度吗?所以工作时间决定了你能做成什么样吧方案分析:方案1、直接写成布局,然后按照不同的布局加载不

2022-01-26 16:59:47 789

原创 史上最全 Android 中高级工程师面试复习大纲

概述都说金三银四青铜五,这几个月份是程序员最好的跳槽时间,笔者也打算趁着这个时间换下工作。找工作之前看了很多面试题,复习资料,但是发现纯看面试题是不行的,因为靠背的东西是记不牢的,需要知识成体系才可以,所以笔者整理了一份复习大纲,基本涵盖了 Android 中高级工程师面试所必须知识点,希望可以通过此文帮助一些想换工作的朋友更好的复习,准备面试。本文只罗列出大纲内容,至于每个模块的详细内容,网上很多资料,可自行查阅,后序有时间会放一些我复习时看的资料,这样复习起来知识更成体系,事半功倍。1、Ja

2022-01-25 21:21:23 193 3

原创 如何在 Flutter 创建一个后台任务

原文www.dltlabs.com/blog/flutte…参考pub.dev/packages/ba…正文今天,我将解释如何在 Flutter 创建一个后台任务。在此之前,让我们理解什么是后台任务。后台任务是在后台运行的应用程序的辅助进程,即使应用程序没有运行或处于终止状态。这一功能对于需要在后台执行任务而不需要用户打开应用程序的应用程序来说是有益的ーー例如,每 15 分钟调用 api 获取数据。让我们在一个示例项目中实现一个后台任务,以便更好地理解这一操作的含义。步

2022-01-25 15:47:02 2995 2

原创 Jetpack Compose - 浅谈derivedStateOf(四)

初识 derivedStateOf首先看这样一段代码:@Composablefun TodoList(highPriorityKeywords: ArrayList<String> = arrayListOf("Review", "Unblock", "Compose")) { val todoTasks = remember { mutableStateListOf<String>("huawei", "xiaomi", "oppo", "apple", "C

2022-01-24 20:42:49 1733 2

原创 大龄Android程序员刚迈过了 35 岁这个“坎儿”,和大家说点儿心里话

今年是 202年 1月 21日,我已经上班第三天了,没错,我们公司已经开工了。不知道是不是整天都带着口罩的缘故,感觉这周的工作效率很低,晚上回家写技术文章效率也低,今天决定水一篇……不不不,今天我想和大家分享分享我这么多年的一些经验和感悟。先说说我对公司开工的说法我不是奋斗B,我平时不会为了加班而加班的,活儿忙的时候加班,不忙的时候基本上到点儿就撤,有些领导可能会看加班时间的长短,我也不会 care 的,因为我觉得作为一名程序员,主要按时按质量完成开发任务,保证系统稳定运行就足够了...

2022-01-21 20:24:17 6431 3

原创 移动端App架构Demo

移动端App架构Demo项目地址:github.com/yeshu-cn/mo…通过分层和接口的架构设计,实现可以快速Mock,单元测试的APP实例。功能登录,注册。 发帖,帖子列表,评论。 帖子点赞和帖子收藏。 修改用户昵称和头像。架构三层结构:业务层,持久层,展示层。 本地实现业务逻辑。 使用内存来实现持久层。ui:展示层,主要负责数据展示和用户交互。domain:业务层,利用抽象的Repository和Service接口实现业务逻辑UseCase,UseCas

2022-01-18 21:11:20 576 2

原创 第一章 常见跨平台解决方案及Flutter架构

近些年来,不断的有前端跨平台方案涌现出来,比如基于WebView的Cordova,还有渲染成原生控件的Reactive、Weex等,那么,这些跨平台方案有什么通用的实现思路呢,而Flutter的设计思路与他们的区别又是什么呢。带着这些疑问,本章将会介绍什么是跨平台,常见的跨平台方案有哪些,以及Flutter的实现方案。1.1 跨平台解决方案1.1.1什么是跨平台我们知道,CPU有不同的架构和指令集,上层也有不同的操作系统,一个系统的可执行文件在另一个系统上就是不可执行的,比如Windows的e.

2022-01-17 17:27:26 3484 2

原创 Android修炼系列(一),写一篇易懂的动态代理讲解

在说动态代理之前,先来简单看下代理模式。代理是最基本的设计模式之一。它能够插入一个用来替代“实际”对象的“代理”对象,来提供额外的或不同的操作。这些操作通常涉及与“实际”对象的通信,因此“代理”对象通常充当着中间人的角色。代理模式代理对象为“实际”对象提供一个替身或占位符以控制对这个“实际”对象的访问。被代理的对象可以是远程的对象,创建开销大的对象或需要安全控制的对象。来看下类图:再来看下类图对应代码,这是IObject接口,真实对象RealObj和代理对象ObjProxy都实现此接口:

2022-01-14 16:53:34 327

原创 Android开发进大厂系列(一)阿里篇

以前我提到过,2021年我实现了一个小目标,毕业三年加入阿里。听上去好像挺厉害,挺光鲜,但是实际上并不那么容易,在这背后有很多我自己摸索和努力的故事。在这里我想分享一些我的经验,送给那些跟我一样,没名校背景没大厂背景,但是想进阿里(或其他大厂),又有点迷茫不知该如何前进的人。其实在进阿里之前,我也挺迷茫,内心有一些谜团一直困扰着我,比如阿里招人标准是什么?,自己距离这个标准有多少差距?那时候一直不知道,就好像置身于沙漠之中,却不知道往哪里走。这时候,找到方向最为关键。(很多人跟我那时候一样迷茫,

2022-01-13 20:00:44 142 2

原创 android充电架构的分析

前言目前android设备越来越多,对于快速充电和长时间待机的需求就不言而喻。对应于此的就是各大手机厂商不断突破大功率充电新闻频繁的出现。在个人目前遇到的快充方案中,基本上在大的架构下属于同一种类型。故分析记录下来。基本原理充电简单粗暴点来说就是把电流灌到电池里面去。那么最简单的方法就是直接拿一个电源接在电池的正负极。只要电源电压高于电池电压就可以把电流灌进去。就如同直接打开水龙头开关接水一样。但是这样会存在很多问题。例如:电池此时的电压很小,电源电压很高,一怼上电池上的电流就会变得非常大,

2022-01-06 21:18:07 778 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除