本篇目录:

Handler源码分析

Handler可以把消息/ Runnable对象 发给Looper,由它把消息放入所属线程的消息队列中,然后Looper又会自动把消息队列里的消息/Runnable对象 广播 到所属线程里的Handler,由Handler处理接收到的消息或Runnable对象。

当 loop() 取出消息时,调用 dispatchMessage 方法根据 target 属性,回调对应 handler 实例的 handlerMessage 方法处理消息。

android源码分析(android源码怎么看)  第1张

本节研究删除 ChannelHandler 的逻辑。类似 ChannelInitializer 这种, handler 用完一次就没什么用的场景,类似权限校验,每次新连接接入需要校验权限,之后的数据传输就不需要了,这时候就可以动态的删掉权限校验的 handler 。

源码分析-一个应用到底有几个Context

Activity间接继承了Context,是为了拥有跟ContextImpl一样的功能,但真正起作用的是mBase这个成员变量,所以一个Activity其实就只有一个Context起作用,那就是ContextImpl类型的mBase。这种计算方法应该是没有问题呢。

ContextThemeWrapper类包含了与主题Theme相关的接口,而只有Activity才需要主题,Service跟Application不需要。以下是ContextThemeWrapper的源码 返回的是同一个Applicatoin对象,但作用域不同:至此,关于Context分析完毕。

Android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中常用两种context,一种是application context,一种是activity context,通常我们在各种类和方法间传递的是activity context。

android源码分析(android源码怎么看)  第2张

Android:深入剖析图片加载库Glide缓存功能(源码分析)

源码分析如下:若上述两个方法都没获取到缓存图片时(即内存缓存里没有该图片的缓存),就开启新线程加载图片。

内存缓存 本地缓存 网络缓存 其中,内存缓存应优先加载,它速度最快;本地缓存次优先加载,它速度也快;网络缓存不应该优先加载,它走网络,速度慢且耗流量。

解决办法: 这是Glide强大的缓存带来的副作用,我们可以在RequestOptions中加入.diskCacheStrategy(DiskCacheStrategy.NONE).skipmemoryCache(true)的选项。

Glide四级缓存:先找内存,再找文件 1)活动缓存(活动资源):ActiveResource,里边使用一个弱引用weakHashMap来保存正在使用的图片,当我们加载图片的时候,先从activeResource里边去查找,如果找不到的话就从内存缓存里查找。

android源码分析(android源码怎么看)  第3张

在设计一款Android应用的时候,一个好用的图片加载框架应该尝试最小化网路请求的次数。Glide也一样,Glide默认通过内存和磁盘缓存来避免不必要的网络请求。在后续的文章中我们会具体看看其实现细节。

Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图。

到此,以上就是小编对于android源码怎么看的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。