自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

安卓开发架构

安卓开发架构群:936332305(面试资源与经验总结,BAT内推,高级UI、性能优化、架构师课程、NDK、混合式开发全方 面的 Android高级实践技术讲解以及在线答疑等。)...

原创 优雅保活方案,原来Android还可以这样保活!

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 保活现状 我们知道,Android 系统会存在杀后台进程的情况,并且随着系统版本的更新,杀进程的力度还有越来越大的趋势。系统这种做法本身出发点是好的,因为可以节省内存,降低功耗,也避免了一...

2020-05-25 21:38:17 70 0

原创 面试官问我:Android EventBus的源码,看我如何用漫画装逼!

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 基本使用步骤 1)定义事件Event public class MyEvent { public MyEvent(String id, String message) { ...

2020-05-21 21:28:34 44 0

原创 [2.4K Start] 放弃 Dagger 拥抱 Koin

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 当我正在反复学习 Dagger 的时候,我遇见了 Koin,Koin 不仅节省了我的时间,还提高了效率,将我从复杂 Dagger 给释放出来了。 这篇文章将会告诉你什么是 Koin,与 ...

2020-05-15 21:24:14 36 0

原创 一文摸懂OkHttp

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 前言 在面试中,OkHttp作为我们基本属于必用的第三方库来说,也是一个非常重要的考点,所以对其原理的掌握也会让我们的能力得到一定的提升。 OkHttp官网地址:square.githu...

2020-05-14 20:44:05 152 0

原创 这次,我把Android事件分发机制翻了个遍

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 这次说下Android中的事件分发机制 从开始点击屏幕开始,就会产生从Activity开始到decorview一直到最里层的view一连串事件传递。每一层view或者viewgroup都会首先调用...

2020-05-12 16:02:38 118 0

原创 Flutter 在哈啰出行 B 端创新业务的实践

前言 Flutter作为跨平台开发技术、Flutter以其美观、快速、高效、开放等优势迅速俘获人心,但很多FLutter兴趣爱好者进阶学习缺少资料,今天我把搜集和整理的这份学习资料分享给有需要的人 领取地址: Flutter:从认识到实战 时间线 Flutter 在我们团队的起步算是比较晚的,直到...

2020-05-07 21:22:35 120 0

原创 Hook 技术初探
原力计划

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 Hook 技术 Hook 是钩子的意思,在 Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。 而钩子...

2020-04-27 10:08:59 111 0

原创 可怕!RxHttp2.0重大更新!协程发请求,原来如此简单

1、前言 一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 RxHttp 在v2.0版本中加入对协程的支持,收到了广大kotlin用户的喜爱,他们也不禁感慨,原来协程发请求还能如此优雅,比retrofit强大的不止一点点,然而,这就够了吗...

2020-04-23 16:28:27 185 0

原创 什么?这个天天使用的API竟然被废弃了?

上个礼拜,我在公众号的某篇文章下面看到这样一条留言: 什么?holder.adapterPosition被划线不推荐使用了?难道是API被弃用了?我决定对这个问题好好研究一下,并加急写一篇文章进行分析。仔细一看,holder.adapterPosition这不就是我们平时在RecyclerVie...

2020-04-22 15:18:34 124 0

原创 安卓11来了,快!扶我起来

一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 前言 安卓更新换代非常快,5.0之前版本更新的时间线有点看不懂,但5.0之后更新还是比较稳定的,大概一年更新一次,谷歌工程师对安卓每个版本的命名也有点意思,比如棒棒糖、棉花糖、奥利奥、馅饼...

2020-04-20 17:34:02 211 1

原创 Flutter 实现虎牙/斗鱼 弹幕效果

先来一张效果图: 实现原理 弹幕的实现原理非常简单,即将一条弹幕从左侧平移到右侧,当然我们要计算弹幕垂直方向上的偏移,不然所有的弹幕都会在一条直线上,相互覆盖。平移代码如下: @override void initState() { _animationController = ...

2020-04-14 22:08:30 51 0

原创 Flutter 图片终极全家桶

图片是一个应用中的重要部分,展示,压缩,裁剪,pub三方库应该说是应有尽有。 FlutterCandies 中也有多个关于图片的库,可以说是比较全面了。 extended_image 功能最全面的图片展示库,加粗为最近新增功能 主要功能 缓存网络图片 加载状态(正在加载,完成,失败) 拖拽缩放图...

2020-04-13 21:45:16 66 0

原创 Android厂商推送冲突了。。。

关于厂商推送 推送已经成为当下大部分App的必备功能了,相信大家每天都会收到新闻、聊天消息、普通App的活动等消息推送,而为了提升推送的到达率,大家也做了各种优化,最初应用进程被杀后,就收不到推送了,所以前几年就出了各种应用保活的方法,而Android 8.0以后应用保活的“妙招”就很难生效了。 ...

2020-04-10 21:00:43 239 1

原创 借助 AIDL 理解 Android Binder 机制——Binder 来龙去脉

AIDL 是 Android Interface Definition Language(Android 接口定义语言)的缩写,它是 Android 进程间通信的接口语言。由于 Android 系统的内核是 Linux,它采用了进程隔离机制,使得不同的应用程序运行在不同的进程当中,有时候两个应用之...

2020-04-08 15:16:11 30 0

原创 自定义ViewGroup实现微信朋友圈九宫格图片控件

简介 最近项目里有个类似微信朋友圈的九图控件的需求,Github找了一下,发现都不太满足需求,我需要单张图片的时候可以按照图片宽高比列在一定范围内自适应,而大多开源项目单张图片也是一个小正方形,所以,干脆自己动手写一个 项目源码 具体自定义NineImageLayout过程,可以查看NineIma...

2020-04-01 17:59:48 115 0

原创 2020 Android 大厂面试-插件化、模块化、组件化、热修复、增量更新、Gradle
原力计划

插件化、模块化、组件化、热修复、增量更新、Gradle 1.对热修复和插件化的理解 2.插件化原理分析 3.模块化实现(好处,原因) 4.热修复、插件化 5.项目组件化的理解 6.描述清点击 Android Studio 的 build 按钮后发生了什么 参考答案: 1.对热修复和插件化的理解 ...

2020-03-31 20:56:47 202 0

原创 五分钟带你读懂TCP协议(图文并茂)

TCP 是互联网核心协议之一,本文介绍它的基础知识。 一、TCP 协议的作用 互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。 (图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包...

2020-03-31 16:09:22 74 0

原创 是时候丢掉 onActivityResult 了 !

为什么要丢掉 onActivityResult ? 如何启动一个新的 Activity,并获取返回值? 你的答案肯定是 startActivityForResult和 onActivityResult 。没错,一直以来,在某些场景下,例如启动系统相机拍照,返回当前页面后获取照片数据,我们并没有其他...

2020-03-30 17:21:26 213 0

原创 面试官:如何实现一个LruCache,原理是什么?

1. 简介 LRU 是 Least Recently Used 最近最少使用算法。 曾经,在各大缓存图片的框架没流行的时候。有一种很常用的内存缓存技术:SoftReference 和 WeakReference(软引用和弱引用)。但是走到了 Android 2.3(Level 9)时代,...

2020-03-27 15:58:50 66 0

原创 杀不掉的知乎 - 聊一聊 Android 的多任务

保活在 Android 绕不开的话题,有些 APP 为了保活煞费苦心。近来发现打开知乎,在近期任务却看不到知乎,知乎是怎么做到这么强悍的。下面分享来自 NanBox 博客,来揭开知乎是如何做到在近期任务完美隐藏的: 不知道大家平时使用 APP 的时候,有没有碰到过下面这种情况:...

2020-03-26 14:41:44 164 0

原创 用Dart语言来写异步程序

正文 废话不多说,开始进入今天的主题吧! async 和 await 开始说这两个关键字之前我觉得有必要提一下:在Dart中没有子线程一说,所有代码都是在一条主线上运行的,所以需要用异步来实现一些耗时操作。(如果非要开启多线程需要使用隔离,这里不做叙述)来说一下这两个关键字吧,async用来修饰方...

2020-03-25 16:03:38 68 0

原创 来聊聊 Android Jetpack

在Android架构组件基础上,融入Kotlin 协程+retrofit,模拟网络,全面快速开发。 Navigation NavController在 NavHost 中管理应用导航的对象,沿导航图中的特定路径导航至特定目标,或直接导航至特定目标。 首先,定义 layout/activity_ma...

2020-03-24 15:01:57 63 0

原创 面试官:说说Android的UI刷新机制?

本文主要解决以下几个问题: 我们都知道Android的刷新频率是60帧/秒,这是不是意味着每隔16ms就会调用一次onDraw方法? 如果界面不需要重绘,那么16ms到后还会刷新屏幕吗? 我们调用invalidate()之后会马上进行屏幕刷新吗? 我们说丢帧是因为主线程做了耗时操作,为什么主线程...

2020-03-20 16:11:45 98 0

原创 聊聊OkHttp实现WebSocket细节,包括鉴权和长连接保活及其原理!

一、序 OkHttp 应该算是 Android 中使用最广泛的网络库了,我们通常会利用它来实现 HTTP 请求,但是实际上它还可以支持 WebSocket,并且使用起来还非常的便捷。 那本文就来聊聊,利用 OkHttp 实现 WebSocket 的一些细节,包括对 WebSocket 的介绍,以及...

2020-03-19 21:31:16 113 0

原创 Android SDK 开发经验浅谈

1. 前言 从事 SDK 的研发工作有近两年的工作时间了,期间一直在维护和开发公司的 Android 数据采集埋点 SDK。主要想通过这篇总结简要介绍下 SDK 开发过程中的一些经验。 1.1 什么是 SDK 相信做 Android 开发的同学,肯定使用过很多第三方的 SDK,比如极光 SDK、支...

2020-03-19 16:19:53 136 0

原创 我才知道原来Flutter内置了10多种Button控件

注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我们使用,了解这些控件有助于提高我们的开发速度。 RaisedButton RaisedBut...

2020-03-17 20:56:40 50 0

原创 Android一次完美的跨进程服务共享实践

背景 最近需要做这样一个事情,一个服务来完成多款App的录音功能,大致有如下逻辑 服务以lib的形式集成到各个端 当主App存在时,所有其他App都使用主App的录音服务 当主App不存在时,其他App使用自带录音服务 有优先级,优先级高的App有绝对的录音权限,不管其他App是否在录音都要暂停...

2020-03-16 16:45:45 61 0

原创 1个人,100天业余时间,用Flutter开发完一个商业APP

项目介绍 这个一个淘电商APP,同类型的APP有花生日记、好省、折800等等,基本上一个常规电商APP该有的,这个项目都有了。目前,该项目的完成度为80%,剩余的20%因为没有后台项目支持,所以无法完成。 为啥要做这个东西勒,因为作为Flutter的早期研究者,有不少人都问过我,Flutter现在...

2020-03-02 21:26:54 207 0

原创 Kotlin 在Android开发中那些让人舒适的地方

0前言 目前公司的项目已经全面使用Kotlin,转换的过程的确不是怎么让人舒适,但是让人欣慰的是结局是让人满意的。Kotlin的确可以让代码简洁,安全并且高效。这里分享一下,在使用Kotlin中那些让人觉得舒适的地方。 字符模板 空安全 延迟加载 方便易读的循环 强大易用的迭代器 默认参数 Da...

2020-03-02 21:24:24 41 0

原创 不使用synchronized和lock,如何实现一个线程安全的单例?

单例,大家肯定都不陌生,这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的,一般情况下,我们都会使用synchronized来保证线程安全。 那么,如果有这样一道面试题:不使用synchronized和lock,如何实现一个线程安全的单例?你该如何回答? ...

2020-02-28 16:30:17 44 0

原创 漫画:聊聊线程池中,线程的增长/回收策略

一、序 public static ExecutorService newThreadPool() { return new ThreadPoolExecutor( 30, 60, 60L, TimeUnit.MILLISECONDS, new LinkedBlock...

2020-02-27 16:02:37 101 0

原创 Jetpack 系列组件:ViewModel 从相遇到相知

什么是ViewModel 一句话概括ViewModel可以简单理解为带有生命周期的数据对象。一般会和Livedata,dataBinding 等其他组件进行组合使用。 逻辑处理,数据获取和存储不要放到ViewModel类,它仅仅作为UI数据的保存(暴露获取数据的方法),数据存储和获取可以创建Rep...

2020-02-24 17:31:00 91 0

原创 我把废旧 Android 手机改造成了 Linux 服务器

目录 瞎比比 什么都别说,先看看效果怎样? 需要什么材料、设备? root 手机 为 Android 手机装上 Linux 系统 最后 瞎比比 自从没有了学生身份之后,购买云服务器的价格是越来越贵了,不管是阿里云还是腾讯云。我寻思着能不能找到什么替代品,这让我想起之前在...

2020-02-24 16:21:02 284 0

原创 职场修炼场:2019年裸辞的人,现在都在做什么

无意间看到知乎一个讨论,主要是在说去年那些裸辞的人,当下的状态情况,借着这个话题,今天想跟大家讲一些关于裸辞的建议。 话题中的裸辞,题主是这么说的: 总结下来就是: 1 现实与预期落差 2 陷入职场斗争 3 人员流动性大 4 压力剧增 这里有没有发现有趣的事情,这些问题估计刚进入职场的人,都会存...

2020-02-21 23:33:38 97 0

原创 ViewStub你肯定听过,但是这些细节了解吗?

1什么是ViewStub 1. ViewStub 是一个看不见的,没有大小,不占布局位置的 View,可以用来懒加载布局。 2. 当 ViewStub 变得可见或 inflate() 的时候,布局就会被加载(替换 ViewStub)。因此,ViewStub 一直存在于视图层次结构中直到调用了 se...

2020-02-21 23:25:31 54 0

原创 2020 年需要关注的 5 大 Android 开发技术

虽然编程环境每天都有新变化,但 Android 无疑是其中更新迭代最频繁的,每年甚至每个月都有新东西。本文介绍了 2020 年开发者最需要关注的 5 大 Android 开发技术。 在众多 Android 开发团队参加的 Droidcon London 2019 大会上,一系列新技术令人眼花缭乱...

2020-02-21 23:18:27 164 0

原创 Android 锁屏无法继续定位问题

产生问题的原因: 手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会将手机进入休眠状态。此时的服务以及线程等都会停止。 最近就这个问题,阅读了很多代码以及官方文档,下面就说下最近都尝试过的方式,可能其中有些您实现了,我这边没实现,望见谅。本文采用的高德定位。 一、PowerM...

2020-02-21 00:27:34 231 0

原创 你好, View Binding! 再次再见, findViewById!

作为一个 Android 开发者, 你一定听说过 findViewById. 这个方法可以根据 ID 去匹配对应的 View. 实现了类似功能或者增强了其功能的还有: Butter Knife(Kotter Knife) Kotlin Android Extensions Data Bindin...

2020-02-20 23:46:08 233 0

原创 真当Flutter不能热更新?QQ团队开源动态化Flutter

基于JS的高性能Flutter动态化框架 可能是目前放出来的相对最完整的Flutter动态化方案 跨平台新明星Flutter推出后,我们团队也尝试引入 Flutter ,做为iOS开发,马上感受到,Flutter 虽然强大,但不能像RN一样动态化是阻碍我们使用她的唯一障碍了。看Google团队对动...

2020-02-20 23:32:38 74 0

原创 CopyOnWriteArrayList 你了解多少?

相信大家对 ConcurrentHashMap 这个线程安全类非常熟悉,但是如果我想在多线程环境下使用 ArrayList,该怎么处理呢?阿粉今天来给你揭晓答案! 一、摘要 在介绍 CopyOnWriteArrayList 之前,我们一起先来看看如下方法执行结果,代码内容如下: public st...

2020-02-19 19:54:00 34 0

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