![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android源码阅读
天才少年_
微信公众号:程序员小安。更多精彩文章定期推送。
展开
-
Android内存检测框架:LeakCanary源码解析
1.前言前面文章已经讲解过如何使用LeakCanary快速的排查Android中的内存泄露,链接地址:LeakCanary-------快速简单排查Android中的内存泄露,这篇文章将从源码的角度分析LeakCanary排查内存泄漏的原理。2.主要原理通过registerActivityLifecycleCallbacks(Application.ActivityLifecycleCall...原创 2019-09-24 12:32:08 · 3700 阅读 · 0 评论 -
IntentService源码讲解
1. 前言Broadcast Receiver用于接收并处理广播通知,众所周知,onReceive(Context curContext, Intent broadcastMsg)方法用于接受通知,并在该方法体内处理消息,但是onReceive中代码的执行时间不要超过5s,否则会报ANR错误,导致程序异常。一般这种情况,会有两个方案:1)在onReceive方法中开启子线程,做耗时操作...原创 2018-06-01 00:32:36 · 3016 阅读 · 1 评论 -
Android SharedPreference 源码分析(一)
1. 前言众所周知,SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。2.基本概念SharedPr原创 2017-12-09 17:39:41 · 3594 阅读 · 0 评论 -
Android View 事件分发机制 源码解析(ViewGroup篇)
本期三篇文章目录(可点击跳转)一. Android TouchEvent事件传递机制初识 二. android点击事件传递源码讲解(ViewGroup) 三.android点击事件传递源码讲解(View) 1. 前言android点击 事件一直以来都是很多安卓程序员的心病,之前通过demo模拟总结出一些经验,但是不看源码的程序员不是好程序员,这段时间,系统的梳理了下整个事件传递的源码,希望可以原创 2016-12-06 20:11:12 · 6437 阅读 · 1 评论 -
Android View 事件分发机制 源码解析(View篇)
1. 前言上一篇介绍了ViewGroup中点击事件传递过程,这篇主要介绍View中如何传递点击事件以及一些注意点。2.源码解析上文中讲到,dispatchTransformedTouchEvent方法会调用dispatchTouchEvent方法,点击事件从ViewGroup成功传递到View中,接下来看下dispatchTouchEvent方法的源码:/** * Pass the tou原创 2016-12-07 17:08:10 · 4109 阅读 · 6 评论 -
Android TouchEvent事件传递机制初识
1.触发OnTouch事件的时候的三个方法:在触发OnTouch事件的时候Android的GroupView会调用如下三个函数: public boolean dispatchTouchEvent(MotionEvent ev) //用于事件的分发 public boolean onInterceptTouchEvent(MotionEvent ev) // 用于事件的拦截原创 2016-05-13 14:08:55 · 1737 阅读 · 0 评论 -
Universal-Image-Loader中的线程模型
一般来讲一个网络访问就需要App创建一个线程来执行,但是这也导致了当网络访问比较多的情况下,线程的数目可能积聚增多,虽然Android系统理论上说可以创建无数个线程,但是某一时间段,线程数的急剧增加可能导致系统OOM。在UIL中引入了线程池这种技术来管理线程。合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任转载 2016-05-03 20:59:39 · 1271 阅读 · 0 评论 -
Android Scroller源码解析
1. 前言通过view本身提供的scrollTo/scrollBy方法实现滑动,其过程是瞬间的,想要实现弹性滑动的时候,需要用scroller来实现。Android里Scroller类是为了实现View平滑滚动的一个Helper类。通常在自定义的View时使用,在View中定义一个私有成员mScroller = new Scroller(context)。mScroller本身,并不会导致View的原创 2016-07-22 12:52:36 · 2288 阅读 · 0 评论 -
源码角度讲解子线程创建Handler报错的原因
1. 前言众所周知,在android中,非ui线程中是不能更新ui,如果在子线程中做ui相关操作,可能会出现程序崩溃。一般的做法是,创建一个Message对象,然后Handler发送该message,然后在Handler的handleMessage()方法中做ui相关操作,这样就成功实现了子线程切换到主线程。 初始化Handler有两个地方,一个在主线程中,一个在子线程中,具体有什么区别呢,接下来原创 2016-09-20 23:23:33 · 6837 阅读 · 3 评论 -
Android消息处理机制(Handler、Looper、MessageQueue与Message) ,这一篇文章就够了
1. 前言上篇文章介绍了几种hanlder创建方式,其实这种使用方式大家都知道,但是为什么可以这么做,可能很多人不知道,至少不清楚,网上很多文章也是到处粘贴,听别说handler把Message发送到MessageQueue里面去,Looper通过死循环,不断从MessageQueue里面获取Message处理消息,因为Mesage.target就是当前hanlder,所以最后转到handleMes原创 2016-09-26 16:13:59 · 3842 阅读 · 11 评论