源码分析
文章平均质量分 84
Sahadev_
挨踢程序员-糖炒栗子
展开
-
带你根据源码了解View的事件触发流程,主要讲解为什么子View返回true,ViewGroup就无法接收到事件的过程
转载请标明出处!当然一般也没人转载。。。原创 2014-04-16 13:37:53 · 3175 阅读 · 5 评论 -
IntentService解析
IntentService是一个专门用来处理异步线程的一个服务,它内部创建了一个消息队列以及一个Handler对象,其它组件将Intent发送过来之后,IntentService会将这个Intent通过消息队列发送到工作线程,所以,我们可以放心大胆的在IntentService内部做耗时操作,而不必单独开启线程。好,大概描述了下,我们看一下它的实现方式:package android.ap原创 2015-12-31 17:36:08 · 1386 阅读 · 0 评论 -
如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)
今天终于把代码下载完成,特此开一篇博文记录一下。上图:为了下载这些源码,历时5天5夜,说为什么这么长时间,是因为太容易中断了,有时候下一晚上可能就一直没在下,在你入睡的时候它就自己断了,趁着这个周末有时间一直在电脑旁白看着它下完,中途也是挺曲折的,磁盘空间不够用了(我的是40个G,不够用),各种折腾,最后才把30多个G的代码及临时文件移动到其它磁盘(Windows下使用的普通磁盘),继原创 2015-09-14 15:21:41 · 4594 阅读 · 0 评论 -
Android系统原生应用解析之桌面闹钟及相关原理应用之时钟任务的应用(一)
前段时间我一个朋友在面试回来问我:那个公司要5天之内完成一个项目,功能包括每天早上6点开始执行定时任务,大批量图片上传,大批量数据库同步。我心想,后两个功能还好说,可就是每天早上6点开始执行的这种定时任务如何搞定?有了问题,自然要琢磨怎么解决,如果接触的知识面不够,或者没有系统的学习Android API,例如不知道AlarmManager,自然是不知道如何启动定时任务的,当时我也不知原创 2016-03-14 22:01:00 · 5695 阅读 · 2 评论 -
ScrollView嵌套EditText联带滑动的解决办法
本篇文章的相关内容需结合上文:从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法在说完了如何解决ScrollView嵌套EditText的滑动事件冲突之后,我们接下来说一下如何实现它们两者之间的联带滑动。什么是联带滑动呢,就是当EditText滑动到底部的时候,这时就应该让外部的ScrollView接着滑动,让它原创 2016-04-21 17:51:10 · 8996 阅读 · 1 评论 -
从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法
本篇文章假设读者没有任何的触摸事件基础知识,所以我们会从最基本的触摸事件分发处说起。ScrollView为什么会出现嵌套EditText出现滑动事件冲突呢?相信你会有这种疑问,我们来看这么一种情况:有一个固定高度的EditText,假设它只能显示3行文本,但是,我们在其中输入的文本多余三行时,那么这时就需要可以在EditText内部进行小幅滚动了。那么将这个EditText放入了S原创 2016-04-21 16:15:57 · 6389 阅读 · 1 评论 -
探索Glide对Gif图片资源的获取、解析过程
大家新年好,很久没写博客了。今天我们来探索一下Glide是如何支持Gif图片加载的。本篇博客的目的了解代码分析的基本思路与方法了解Glide是如何对Gif图片进行支持的探索背景为什么会有这么一个想法呢,一来一直对Glide是知其名而不知其所以然,二来还主要是工作中需要对它研究研究,以便更好的支持工作内容。我想很多同学都希望自己可以对某种著名的开源框架了解贯通,但是很多原创 2017-02-10 15:18:16 · 5294 阅读 · 4 评论 -
EventBus1.0.1源码解析
很久没有更新过源码解析类文章,以下内容作为源码分析类的笔记。分析方法适用于其它源码分析。分析工具说明许久以来,阅读源代码最得力的工具就非Source Insight莫属了。然,后来微软出了一款轻量级但功能强大的IDE就没Source Insight什么事了。微软的这款IDE就是大名鼎鼎的VSCODE,全名叫:Visual Studio Code。它的强大之处这里就不过多描述了。我们转回...原创 2018-04-11 16:42:51 · 731 阅读 · 0 评论 -
Vue源码探究笔记
一切从这张图开始:数据的入口: /** * ViewModel exposed to the user that holds data, * computed properties, event handlers * and a few reserved methods */ fun...原创 2019-02-27 20:06:57 · 5077 阅读 · 0 评论 -
深入解析Node.js setTimeout方法的执行过程
深入了解setTimeout源码之前,本有两个选择。一是通过chromium源码分析,二是通过Node.js源码分析。后来发现第一种方案的源码获取成本太大,于是从Node官网获取了几十兆的代码用来了解。setTimeout方法定义于timers.js文件中,源码整体如下:function setTimeout(callback, after, arg1, arg2, arg3) { // ...原创 2019-05-30 18:59:13 · 3157 阅读 · 1 评论 -
Promise源码解析
Promise源码解析纸上得来终觉浅,绝知此事要躬行。之前只是很浅显的知道Promise的用法,也大概猜测到它的内部是如何实现的。但是总是有一种不深究一下就不踏实的感觉。于是从npm上获得早期的Promise源代码,拿过来读一读,做一做笔记。Promise的源码写的非常的巧妙,凭空阅读会陷入入其中无法自拔。简单的Promise用法一个简单的Promise用法如下:const promis...原创 2019-05-31 20:34:59 · 2596 阅读 · 1 评论 -
MVP模式在Android中的应用之图片展示选择功能的框架设计
前言:虽然安卓出现的时间比其它平台软件比较晚,但是在我们的安卓开发中,一样可以使用我们所熟知的设计模式来给它一个合理、完善的结构,这样,才可以使我们在平常开发的时候减少冗余代码的发生,真正的提高效率。平常,我们可能会遇到这样的需求:在一个页面中用来展示图片或者文字(我们称之为"大湿胸"),而另一个页面除了和大湿胸长得一模一样之外,它还有一个功能是选择(我们称之为"二湿弟"),遇到这种情况你会怎么做呢?当类似于这样的情况在你的APP中有很多种怎么办呢?你会怎么选择?是一遍遍的拷贝粘贴,还是先静下来想想如何原创 2015-11-17 17:49:05 · 1508 阅读 · 0 评论 -
从源码的角度说说Activity的setContentView的原理
我们在Activity开发的时候天天会用到这个方法,有时候还需要根据需求在setContentView调用的时候做一些动作,因此我们就需要知道它内部是如何工作的,我们来一起看一下:setContentView有三个重载方法: public void setContentView(int layoutResID) { getWindow().setContentView原创 2015-10-12 15:14:51 · 1264 阅读 · 0 评论 -
如何通过反射来解决AlertDialog标题由于字数过多显示不全的问题
转载前请标明出处:http://blog.csdn.net/sahadev_原创 2014-06-10 10:37:05 · 5310 阅读 · 1 评论 -
简单讲述一下Intent的传值过程
昨晚带女友Android入门,她本是照着一本书敲得,可以运行,后来她自己凭思维自己写了一个,然后出现了值没有传过来的问题,然后简单的了解了一下Intent是如何传递数据的。我们的例子是这样的:由A Activity通过startActivityForResult方法启动B Activity,然后由B将某个字符串返回给A,由于我女友的疏忽,key不小心写错了,当时我们使劲的找,却没发现问题,原创 2014-12-20 23:39:04 · 2083 阅读 · 0 评论 -
ListView原理简单介绍(着重介绍getView被调用的一系列过程)
今天出去面试,被面试官问到一个问题,说是如果使用LayoutInflate.inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot);这个方法与ListView原创 2014-12-19 21:33:38 · 2703 阅读 · 0 评论 -
Android消息队列图片记录
很早之前为了给学生讲明白整个消息队列是怎么个情况,于是大概阅读了一下消息队列的整个工作做成,鉴于网上大部分都是文字说明,没有一个图例,于是做出了下面这张图,权当作以后复习只用,也供大家学习参考,有什么不整确的请指正。原创 2015-08-13 22:37:02 · 1463 阅读 · 0 评论 -
Android中如何查看在res中存放的drawable文件对应的JAVA类型是什么呢
有些时候需要将res中的资源文件加载进来然后做一些修改,然后再赋值给控件使用,比如这样:Drawable drawable = getResources().getDrawable(int id);现在我需要把资源文件id所对应的Drawable对象加载进来,然后做向下转型处理,如果我不调试查看本身的类型的话,该怎么知道它到底是哪种类型呢?我们来通过源代码查看究竟:首先我们找到getResou原创 2015-09-07 17:30:34 · 1709 阅读 · 0 评论 -
在Activity启动过程中如何任务栈的栈顶是否是将要启动的Activity的实例
我们在ActivityStack类中可以看到某个方法用于返回当前任务栈顶端的ActivityRecord对象,如果栈是空的,就返回null,ActivityRecord用于代表在历史任务栈中的一个Activity对象的信息。 /** * Returns the top activity in any existing task matching the given原创 2015-09-09 18:27:40 · 1638 阅读 · 0 评论 -
如何查看Activity任务栈以及dumpsys_activity命令的简要使用及介绍
今天看到淘宝客户端的某个页面效果,效果是在两个Activity中做动画,为了知道究竟是不是在同一个Activity中做的效果,就必须采取一种手段来知道是不是同一个Activity.有两种实现方式:第一种:自己手动写一个程序,通过系统提供的函数来打印任务栈顶的Activity名称来判断是否是同一个Activity:如下:List runningTasks = mActivityMan原创 2015-09-06 17:28:06 · 7421 阅读 · 0 评论 -
Android控件默认风格解析之SeekBar
在我们开发的时候常常需要更改原生控件的默认效果,有时候某些控件改起来挺费劲的,比如SeekBar的背景与其ProgressBar的进度粗细或者thumb居中现实与否如果弄错,都是个大麻烦,我曾经就为thumb的居中显示问题浪费了很多很多的时间,后来以别的笨拙的办法解决了,现在重新回来看,决定下决心整一下,看看到底是怎么回事。我们知道,当我们在写一个xml布局的时候,只需要简单的为这个控件指定一原创 2015-10-23 18:01:39 · 6331 阅读 · 2 评论 -
从源码角度分析Android系统的异常捕获机制是如何运行的
我们在开发的时候经常会遇到各种异常,当程序遇到异常,便会将异常信息抛到LogCat中,那这个过程是怎么实现的呢?我们以一个例子开始:import android.app.Activity;import android.os.Bundle;public class MainActivity4 extends Activity { @Override protected v原创 2015-10-10 17:54:28 · 2003 阅读 · 0 评论 -
从源码说说dispatchTouchEvent与onTouchEvent的关系以及OnTouchListener的用法
为什么要说这个问题呢,这段时间还是在SeekBar上遇到一些问题,好像ADT并没有给seekBar在xml中提供enabled属性,虽然我们可以在代码中设置,但是它并不能实现下面这个需求,所以我们需要找到别的方式去实现它,也为了能更好的了解一下dispatchTouchEvent与onTouchEvent之间的关系。我们现在有这么一个问题,我们需要使SeekBar在某些时候只可点击不可拖动,如原创 2015-10-26 21:31:53 · 1919 阅读 · 1 评论 -
从源码的角度说说Activity的setContentView的原理(二)
前文http://blog.csdn.net/sahadev_/article/details/49072045虽然讲解了LayoutInflate的整个过程,但是其中很多地方是不准确不充分的,这一节就详细讲一下我们上一节遗留的细节问题,我们遗留的问题有这些:1.在PhoneWindow的setContentView里我们看到了一个mLayoutInflater对象,我们还没清楚它从哪来?原创 2015-10-12 17:53:18 · 1108 阅读 · 0 评论 -
axios网络请求框架源码解析
早期axios0.1.0版本做了对IE浏览器与包含XmlHttpRequest的浏览器的支持。并且做了对请求参数拼接、Json对象序列化等基本功能。到0.19.0版本时,内部请求已经变为了在Node环境下与主流浏览器的支持,其中Node环境下支持http请求与https请求。并且支持取消、拦截。Axios执行开始之初,首先执行createInstance方法,createInstance方法用...原创 2019-06-13 17:11:18 · 2588 阅读 · 3 评论