自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 事件分发机制的源码分析

问题在进行正文之前,我们带着以下几个问题有目的的进行,然后最后再做问题的解决。问题 1:activity、 ViewGroup和 View 都不消费 ACTION_DOWN,那么 ACTION_MOVE 和 ACTION_UP 事件是怎么传递的? 问题 2:在 ViewGroup 中的 onTouchEvent 中消费 ACTION_DOWN 事件(onInterceptTouch 默认...

2019-04-30 21:48:14 148

原创 【斩获7枚offer,入职阿里平台事业部】横扫阿里、美团、京东、之后,我写下了这篇面经!

自身情况跳槽之前,楼主在一个小型互联网公司,主要是做互联网彩票。其中做过面向用户的 APP,也有o2o模式的,也有b2b模式的的项目,用的技术比较杂,没有指定的规范,只要能完成任务就可以,技术挑战也不是很大。然后我只能把我所做的东西做好,推动一些新技术更是难上加难,主要都是业务为主,对于高并发、高可用等技术 方案犹如天上月亮一样,只可远观,而不可亵玩焉。然而去年10月,国家发布 新的...

2019-04-28 21:14:23 1450

原创 年薪50w的BATAndroid架构师知识体系详解

前言近几年,Android 开发的套路日趋成熟,越来越多的 Android 工程师获得了「高级」的称号,也有不少人在参与公司的 App 从无到有再到火爆的整个开发过程中,顺理成章地拿到了 Leader 职位。但对于自己的水平,多数人却并不满意,甚至有不少人觉得自己的水平被同事和老板「高估」了。市场真正需要的所谓「高级架构师」到底需要具备什么条件?在此和大家探讨一下 Android 工程...

2019-04-27 21:24:14 279

原创 滴滴 App 的质量优化框架 Booster,开源了!

一. 序当 App 达到一定体量的时候,肯定是要考虑质量优化。有些小问题,看似只有 0.01% 触发率,但是如果发生在 DAU 过千万的产品中,就很严重了。滴滴这个独角兽的 DAU 早已过千万,自然有一些独到的优化方案。最近滴滴在 Github 上开源了一个 Android App 的质量优化工具Booster,通过动态发现和加载机制,提供了可扩展的能力。等于是一款移动应用的质量优化框架...

2019-04-26 21:43:53 1108

原创 小公司程序员的编程水平与BAT大厂到底有多大差距?

BAT的牛人多,普通人也多,虽然他们不是每个人都能达到令人仰望的技术水平,但毕竟平台高,所以眼光会变得宽阔;代码要求更为严格,所以普通的程序员也会被逼变得更优秀;身边的牛人多,普通的程序员也会受到影响,提升的更快。正好,小编今天看到一篇文章,是讲去阿里的面试经历,也分享给大家,看看自己离着【进】阿里还有多大的差距。Activity说下Activity生命周期 ? Acti...

2019-04-25 21:39:52 287

原创 这样理解,你也能在 30 秒内讲明白 TCP 三次握手

前言某四年经验的同事,去一家包括老板在内总人数只有 13 人的创业团队,面试一份移动端技术经理的职位。开始聊得还挺好的,涉及的不外乎何时何地项目上解决了哪些用户痛点、开发过程中遇到过哪些问题、怎么看待和诊断遇到过的问题、有没有业余的开源项目等等。毕竟四年老手,面试前也有些准备,轻松地就答复了前面这些疑问,只是没想到,面试官最后抛出这样一个问题,把同事给难住了:如何用 30 秒给新手讲明白 ...

2019-04-25 20:41:05 128

原创 Android资源编译和打包过程分析

简介我们都知道apk其实是一个压缩包,我将一个平时开发的apk解压得到如下目录:这里我们可以看到,经过编译和打包以后,apk里有:二进制的AndroidManifest.xml assets资源,原封不动的打包到了apk里 classes.dex,java代码编译为dex文件,这里不详述 kotlin代码 lib包 res文件夹,打开可以看到里面都是些二进制文件 res...

2019-04-25 15:57:37 708

原创 Android进阶知识:事件分发与滑动冲突(二)

接着看代码块3,在这段很长的代码里,首先一个if中判断了该事件是否满足没有被拦截和被取消,之后第二个if判断了事件类型是否为DOWN,满足了没有被拦截和取消的DOWN事件,接下来ViewGroup才会循环其子View找到点击事件在其内部并且能够接受该事件的子View,再通过调用dispatchTransformedTouchEvent方法将事件分发给该子View处理,返回true说明子View成功...

2019-04-24 22:28:46 232

原创 Android进阶:用最详细的方式解析Android消息机制的源码

Handler源码解析一、创建Handler对象使用handler最简单的方式:直接new一个Handler的对象Handler handler = new Handler();所以我们来看看它的构造函数的源码: public Handler() { this(null, false); } public Handler(Callback ca...

2019-04-24 21:30:15 186

原创 Android进阶知识:事件分发与滑动冲突(一)

1、前言Android学习一段时间,需求做多了必然会遇到滑动冲突问题,比如在一个ScrollView中要嵌套一个地图View,这时候触摸移动地图或者放大缩小地图就会变得不太准确甚至没有反应,这就是遇到了滑动冲突,ScrollView中上下滑动与地图的触摸手势发生冲突。想要解决滑动冲突就不得不提到Android的事件分发机制,只有吃透了事件分发,才能对滑动冲突的解决得心应手。2、事件分发机制...

2019-04-24 21:29:15 173

原创 真实经历,互联网大厂升职加薪那些事

01我的第一份工作,在三星电子北京通信研究院。11年8月份,也就是研二暑假开始在这里实习,12年3月底硕士毕业,正式入职,月薪9980元。公司制度,工作日8小之外、周末工作都算加班,加班费为基本工资1.5倍,这在北京的IT、互联网行业及不常见。刚去实习的时候,听老员工讲,08年奥运会前后,加班很多,通常一个月下来,加班费比工资还高,到手两三万稀松平常。而当时奥林匹克公园(鸟巢)附近的新...

2019-04-24 15:40:37 251 1

原创 Android 凉了?聊聊Android的出路,架构必备技术

从现在很多 Android 培训广告来看,Android 没凉,似乎还回暖了,不过不可否认,现在做 Android 确实比以前难过,其实每个行业发展到一定程度都会饱和,这都是属于正常情况,如果你第一份工作是 Android,如今工作三四年,想必也会遇到技术瓶颈,无关 Android 是否没人要,也会思索考虑自己的职业发展:1、继续钻研技术?2、技术经理?3、转岗转行?钻研技术首先来...

2019-04-23 16:07:46 150

原创 Android NDK秘籍--编译静态库、调用静态库

此篇文章的目的:将C/C++的源码直接编译成静态库,只能提供给底层调用。注:比较适用于将第三方开源库编译成静态库,也可以将自己写的源码编译成静态库,给自己或其他人的底层调用。本文目录:1.开发环境配置2.编译静态库方法3.调用静态库方法4.示例1.开发环境配置环境配置:开发工具:Android Studio 3.0.1Android SDK T...

2019-04-21 21:28:38 965

原创 从三流小公司到一线大厂,聊聊程序员的成长之道

我想,没有一个程序员能够一步登天,一下子达到很高的高度,有些路是我们必须要走的,有些阶段是我们必须要经历的。有入门,才有进阶,才有更上一层楼。别看我现在在大厂,但是我也待过小到不能小的小公司,也许你会感兴趣,那么不妨听我说说,我在学习编程路上待过的公司吧。不到20人的小公司我在大学的时候学的不是计算机,上的课程基本上和计算机也没太大关系,但是我从小还是比较喜欢捣鼓电脑的,不瞒你说,以打...

2019-04-19 16:43:56 180

原创 flutter尽然还能有这种操作!!!

Android开发,有些系统功能不符合我们的开发需求,可能回去看看源码,考虑怎么去覆写实现,或者考虑直接拷贝源代码,自己实现,当然如果代码依赖的很复杂,那么拷贝就不是一个明智的选择了。这个弹窗有可能你遇到过,当我们修改代码源文件的时候,androidsutido会弹出这个弹窗,给你一个提示,大多数时候我们关了这个弹窗,会当什么都没发生过,但是我们如果点下确定的,是可以改代码的,wtf!!!...

2019-04-17 21:24:49 662 2

原创 月薪20k的Android面试都问这些问题(含答案)

金三银四跳槽季即将过完,相信大家肯定急需一套Android面试宝典,今天给大家准备了我珍藏已久的Android高阶面试宝典,供大家学习 !【文末有干货】一、面试题:1.自定义Handler时如何避免内存泄漏2.onNewIntent的调用时机3.RecyclerView相比ListView有哪些优势4.谈一谈Proguard混淆技术5.ANR出现的场景及解决方案二、详细解析:1...

2019-04-17 15:40:04 458

原创 flutter屏幕适配 ,一种一劳永逸的全局适配方式

flutter 屏幕适配 demomain一种一劳永逸的全局适配方式效果320x4801080x1920原理 (具体代码main)1.更改配置的 ViewConfiguration 的size和devicePixelRatio (ViewConfiguration 这个类再 RenderView 里赋值,而RenderView是 renderObject树...

2019-04-16 21:43:33 6056

原创 简单项目实战flutter(功能篇)

通过State改变界面不同于在原生Android中手动改变控件的属性,Flutter使用State来管理界面状态,使用setState方法改变state将触发页面重绘,达到变化的目的,因此只需要维护一组可以改变的值来控制widget究竟如何显示,而无需去关注widget们本身,以下是一些简单的例子:int langType = 0; // 0 中文 1 英文Text( today...

2019-04-16 15:41:05 2191

原创 30岁之前最重要的投资,为什么是投资自己?

注意:大部分年轻人可以读一读,少数有钱人略过,因为有足够的资本,去让钱生钱性价比很高,是的,本文谈的其实是什么阶段做什么性价比最高。很多年轻人都想财富自由,但这不可能靠打一个月赚5000的工来实现,于是很多鸡汤告诉你,要学会钱生钱,通过投资实现财富自由。程维2012年创立滴滴,那是他第一次创业,29岁,啥都没有,要改变最难改变的出行行业。有这种梦想的,不是成为傻子,就是成为大佬。有一波...

2019-04-16 15:30:48 310

原创 马云最新内部讲话:996是员工的巨大福气!你怎么看?

最近996话题特别火,马云也在内部讲话中着重讲了这一点,分享几点,并谈谈我的看法。01马云:能做到996是一种巨大的福气马云认为,能做到996是一种巨大的福气:很多公司、很多人想996都没有机会。如果你年轻的时候不996,你什么时候可以996?你一辈子没有996,你就觉得很骄傲了?这个世界上,我们每一个人都希望成功,都希望美好生活,都希望被尊重,我请问大家,你不付出超越别人的努力和...

2019-04-14 20:38:17 496

原创 99%的程序员认不全的软件开发定律

这些著名的软件开发定律,你都知道哪些?与其他领域一样,软件开发领域也有一些非常有趣的定律。程序员、技术经理和架构师们经常在会议和聊天中提到它们。作为小白,我们常常只有点头附和的份,因为我们不希望让对方知道我们实际上根本不知道布鲁克、摩尔或者维斯都是什么人。这些定律包括了一些法则或软件开发大神的名言。它们都很有趣,值得我们一探究竟,而且每个定律背后都有令人惊叹的背景故事。在这篇文...

2019-04-12 21:25:21 158

原创 Flutter 启动页(闪屏页)具体实现和原理分析

为什么要有启动页?在以下文章中,启动页就是闪屏页。现在大部分App都有启动页,那么为什么要有启动页?这是个值得思考的问题,如果没有启动页会怎样,大部分的App会白屏(也有可能是黑屏,主题设置有关系)非常短的时间,然后才能展示App的内容。那么问题来了,一定要有启动页吗?答案:不是,而且是尽可能不要有启动页,因为启动页会让用户体验不够连贯,甚至IOS在开发手册上就不推荐使用启动页。...

2019-04-12 20:50:07 1520

原创 一个人怎样才算见过世面?

01不随意评价别人不试图改变别人有个朋友发了条朋友圈。文字是:我该怎么回他?我点开配的截图就明白了。这个朋友喜欢拍Vlog,做好了喜欢在朋友圈分享给大家看。结果有个微信好友给她评论:怎么这么闲?很多人都遇到过这种情况,气炸了。什么叫见过世面?就是学会尊重,接纳不同。可就是有很多人,活到三十多岁,读了好些书,也懂不少东西,就是没学会尊重和接纳不同,一切以自己的喜好和判...

2019-04-12 15:54:47 286

原创 搞定操作系统面试,看这篇就够了(二)

三、死锁必要条件image 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。 环路等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。 处理方法主要...

2019-04-12 15:32:53 157

原创 搞定操作系统面试,看这篇就够了(一)

一、概述基本特征1. 并发并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。操作系统通过引入进程和线程,使得程序能够并发运行。2. 共享共享是指系统中的资源可以被多个并发进程共同使用。有两种共享方式:互斥共享和同时共享。互斥共享的资源称为临界资源,例如打印机等,在同一时间只...

2019-04-12 15:10:57 205

原创 Android 面试常见 - 二分查找算法题

前言金三银四,又是一个跳槽的季节。在面试的过程中,有时候难免会碰到一些算法题目。今天,为大家整理了二分查找常见的算法题。主要包括以下三点 旋转数组中的最小数字 在旋转数组中查找某个数 排序数组中某个数的出现次数 旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素...

2019-04-11 21:26:28 459

原创 Flutter 如何调用Android和iOS原生代码

分3个大步骤:1.在flutter中调用原生方法2.在Android中实现被调用的方法3.在iOS中实现被调用的方法在flutter中调用原生方法场景,这里你希望调用原生方法告诉你一个bool值,这个值的意义你可以随意定,这里表示的意义是是否是中国用户。你可以在flutter中设计好要调用的方法名称,这里就叫isChinese请注意:在flutter中要调用...

2019-04-11 20:57:50 377

原创 Android内存泄漏定位、分析、解决全方案

为什么会发生内存泄漏内存空间使用完毕之后未回收, 会导致内存泄漏。有人会问:Java不是有垃圾自动回收机制么?不幸的是,在Java中仍存在很多容易导致内存泄漏的逻辑(logical leak)。虽然垃圾回收器会帮我们干掉大部分无用的内存空间,但是对于还保持着引用,但逻辑上已经不会再用到的对象,垃圾回收器不会回收它们。例如忘记释放分配的内存的。(Cursor忘记关闭等)。 应用不再...

2019-04-11 20:31:57 325

原创 Android性能优化

针对Android的性能优化,主要有以下几个有效的优化方法:1.布局优化2.绘制优化3.内存泄漏优化4.响应速度优化5.ListView/RecycleView及Bitmap优化6.线程优化7.其他性能优化的建议下面我们具体来介绍关于以上这几个方面优化的具体思路及解决方案。一、布局优化关于布局优化的思想很简单,就是尽量减少布局文件的层级。这个道理很浅显,布局...

2019-04-11 17:00:57 153

原创 开发十年;我的 Android 组件化之路

结构图 PandaMvp 组件化结构图其中路由数据组件为上层业务组件必须要依赖的库,独立功能组件和公共 UI 组件可以根据需求选择是否依赖。公共 UI 组件为应用整体 UI 风格上的公共配置和封装,一般业务组件也都会依赖。基础SDK 为...

2019-04-10 21:37:19 217

原创 Android高级开发之【RxJava】详解(附项目源码)

文章大纲一、什么是RxJava二、为什么要用RxJava三、RxJava使用详解四、项目源码下载一、什么是RxJavaRx(Reactive Extensions)是一个库,用来处理事件和异步任务,在很多语言上都有实现,RxJava是Rx在Java上的实现。简单来说,RxJava就是处理异步的一个库,最基本是基于观察者模式来实现的。通过Obserable和Observer的机制,...

2019-04-10 15:44:01 362

原创 Android高级开发之【OkHttp】详解(附项目源码)

文章大纲一、OkHttp简介二、OkHttp简单使用三、OkHttp封装四、项目源码下载一、OkHttp简介1. 什么是OkHttp一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网上的数据等。OKHttp与HttpC...

2019-04-10 15:04:45 599

原创 Android的线程和线程池

导语在Android系统,线程主要分为主线程和子线程,主线程处理和界面相关的事情,而子线程一般用于执行耗时操作。频繁创建销毁线程不明智,使用线程池是正确的做法。线程池会缓存一定数量的线程,通过线程池就可以避免因为频繁创建和销毁线程所带来的系统开销。AsyncTask底层是线程池,IntentService/HandlerThread底层是线程。主要内容主线程和子线程 Androi...

2019-04-09 21:45:41 132

原创 Android开发中可能被忽视的bug

java.lang.IllegalArgumentException 异常:Receiver not registered 出现情况:偶现 问题原因:广播在没有注册的情况下就调用注销广播方法。 问题场景:平时大多动态注册广播,都是把广播注册写在Activity的onCreate方法里面,把注销写在onDestory里面,这样可以保证调用广播注销方法时,该广播一定...

2019-04-09 21:35:55 205

原创 Android中需要了解的数据结构(一)

Java容器类Java容器类是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)【文章纯干货 请仔细阅读哦!】通过上图,可以把握两个基本主体,即Collection和Map。...

2019-04-09 21:05:27 674

原创 Android多线程源码详解一:handler、looper、message、messageQueue

之前面试,面试官问到多线程通讯,巴拉巴拉说了些基础实现后面试官问handlerThread的底层实现,就卡住了。所以把Android多线程的知识点复习整理一下,写出来加深印象。Android多线程通讯的核心是handler、looper、message、messageQueue,这篇文章就先记录下这套系统的源码要点,具体的实现方法下一篇文章再写。内容为自己看源码的理解,如有问题,欢迎留言探...

2019-04-09 20:55:34 140

原创 Android自定义抛出异常

前言在android开发过程中,我们经常遇到异常的问题,崩溃抛出异常的时候,是非常令人烦闷的。但是异常有一个好处,使得app能在编译的时候给我们提供一些bug信息,有时可能比较模糊,有时可能很精准,甚至提示报错行。基于这一点,今天我们就来讲讲android中的异常吧。今天要讲的内容:throw 和 throws 异常类型 仿写异常及其好处一. throw 和 throws异常...

2019-04-08 20:42:24 5042 1

原创 十分钟搞定 Gradle

前言学习过程中,什么阶段最痛苦?大概是某个知识点的碎片信息学习了很多却仍然无法窥其门径,也就是似懂非懂的时候。对于 Gradle,笔者之前就是这种状态。在亲手完成了一个需求后,发现 Gradle 也不过如此。由于笔者做需求时采用的是倒扒皮的方式,即先 google 搜索如何解决问题,再阅读官方 User Guide,最后总结反思,所以用了半天的时间,还踩了一些坑。如果按照本文介绍,按部就班...

2019-04-08 17:08:03 160

原创 程序员:去年薪 30 万的大厂还是年薪 40 万的小公司?

从我经历了国企、外企、创业和 BAT,通过自己的亲身体会告诉大家,如果你想要在国内长期发展,请尽早进入大厂。我简单的把自己的体会归纳为如下几点,希望对金三银四准备跳槽的你有一些帮助:01公平我们大家都知道一线城市比二线城市更公平,更开放。大厂也是一样的,大厂有更多的包容,即便是最近的寒冬零星的大厂分别裁员,整体大厂的环境还是不错的。如果是小公司会有更多的参差不齐,各种裙带关系。只要...

2019-04-08 16:04:19 202

原创 Android程序员如何应对移动互联网“寒冬”

随着“5G”(第五代移动通信技术)商用进程越来越快,各个芯片和终端厂商们都已经开始布局准备,想必智能手机会是消费者最先能够接触到5G的重要终端,而和其相辅相生的移动互联网也势必会有新的发展。但是和行业本身的发展不相称的是, Android 开发者的市场需求仿佛处于寒冬。最直观的现象就是,工作没有那么好找了。2018年底开始,不管从是官方的公告或是同事午餐间隙的聊天里,都透露着一个信息:资本...

2019-04-08 14:38:01 262

空空如也

空空如也

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

TA关注的人

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