Android 源码系列
文章平均质量分 93
快乐de灰太狼
这个作者很懒,什么都没留下…
展开
-
Android 源码系列之<十五>,深入浅出WebSocket,打造自己的即时聊天交互系统<上>
做Java开发的小伙伴们应该对Socket比较熟悉,在J2SE的Socket编程这一章节中专门对Socket通信做了详细介绍,当时自学完该章节后只知道Socket是端到端通信的,Server端根据指定端口打开Socket链接,然后等待客户端来连接;客户端根据Server端IP地址和端口创建一个Socket通道,根据该通道和Server端进行通信。后来在工作中有使用Socket通信,使用场景是聊天和推送,当时为了项目进度就在GitHub上找了一个不错的开源库autobahn-java中应用在项目中,功能实现之原创 2017-06-07 09:24:56 · 4998 阅读 · 1 评论 -
Android 源码系列之<十六>,深入浅出WebSocket,打造自己的即时聊天交互系统<下>
在上篇文章Android 源码系列之<十五>,深入浅出WebSocket,打造自己的即时聊天交互系统<上>中主要讲解了WebSocket协议,然后通过实战方式展示了WebSocket的通信过程,这篇文章我将从源码的角度带领小伙伴们深入理解一下autobahn以及okhttp的Socket通信源码,如果你对上述项目的WebSocket实现比较清楚了,请跳过本文(*^__^*) ……原创 2017-08-07 17:55:42 · 13902 阅读 · 2 评论 -
Android 源码系列之<十七>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<上>
我们在开发中经常用到一些优秀的第三方库,比如okhttp,glide,butterknife等。这些库不仅提高了开发效率而且避免踩坑,假如在应用中这些开源库出现了bug,我们随时可以从GitHub下载源码进行bug修改。但是项目中使用的库不是开源的并且该库又存在bug,由于没有源码也就无法进行bug的修复,一般做法就是给非开源库的作者或组织反馈bug等他们进行修复,如果他们修复的及时还好说,一旦他们更新不及时就会给我们APP造成不好影响(比如用户流失)……这篇文章我就给小伙伴们讲解一下如何自定义Gradle原创 2017-11-15 15:00:20 · 5627 阅读 · 3 评论 -
Android 源码系列之<十九>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<下>
前边两篇文章Android 源码系列之<十七>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<上>和Android 源码系列之<十八>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<中>里主要讲解了如何自定义Gradle Plugin,然后利用自定义的Gradle Plugin插件来修复项目中引用的第三方Jar包中的bug的方法,其核心就是利用开源库Javassist修复第三方Jar包中的class文件,然后在项目打包的时候把修复过的Jar包打包进项目中从而达到修原创 2017-12-04 17:54:44 · 1361 阅读 · 3 评论 -
Android 源码系列之<十八>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<中>
在上篇文章Android 源码系列之<十七>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<上>中由于篇幅原因我们主要讲解了如何创建自定义Gradle Plugin以及修复第三方Jar包中的bug的思路,如果你还没看过上篇文章,强烈建议阅读一下。这篇文章就带领小伙伴们借助Javassist开源库实现对class文件的修改。原创 2017-11-16 10:52:28 · 2167 阅读 · 8 评论 -
Android 源码系列之<二十>通过反射解决在HuaWei手机出现Register too many Broadcast Receivers的crash
Android开发适配问题一直是一个让人头疼的话题,由于国内很多厂商都有对原生Android系统做不同的定制,结果导致适配起来很麻烦。印象最深的一个适配是让Notification的背景色做到和系统通知栏背景色一致,然后就是想各种办法做适配……近来在Bugly上查看统计APP的crash日志的时候发现有一个crash日志很诡异,该crash只发生在HuaWei手机上,截取部分Crash日志如下所示:原创 2018-01-13 23:25:05 · 13820 阅读 · 16 评论 -
Android 源码系列之【二十一】从源码的角度深入理解SafeIterableMap
转载请注明出处:https://blog.csdn.net/llew2011/article/details/85222413说起HashMap想必小伙伴们都非常熟悉吧,它出现在面试中的概率是很高的,网上有很多文章对它的实现原理做了详细的分析,这里不再做过多的论述,今天给大家带来的是一个新的集合类SafeIterableMap,直接看名字貌似是一个Map类,但是它并没有实现Map接口,而是采用...原创 2018-12-31 23:55:29 · 1019 阅读 · 0 评论 -
Android 源码系列之《二十二》从源码的角度深入理解Java的动态代理机制(上)
转载请注明出处:https://blog.csdn.net/llew2011/article/details/85923036在上篇文章:Android 源码系列之<二十>通过反射解决在HuaWei手机出现Register too many Broadcast Receivers的crash的文章中,我们分析了在HuaWei手机Android 8.1及以下版本中动态注册Broad...原创 2019-01-27 18:08:16 · 1594 阅读 · 1 评论 -
Android 源码系列之《二十二》从源码的角度深入理解Java的动态代理机制(下)
转载请注明出处:https://blog.csdn.net/llew2011/article/details/85928756在上篇文章Android 源码系列之《二十二》从源码的角度深入理解Java的动态代理机制(上)中我们讲解了如何通过动态代理解决在HuaWei手机Android 9.0版本中注册BroadcastReceiver超过1000引发应用crash的问题,但这种解决方式并不太合...原创 2019-02-28 20:27:08 · 346 阅读 · 0 评论 -
Android 源码系列之<十三>从源码的角度深入理解LeakCanary的内存泄露检测机制(中)
在上篇文章Android 源码系列之<十二>从源码的角度深入理解LeakCanary的内存泄露检测机制(上)中主要介绍了Java内存分配相关的知识以及在Android开发中可能遇见的各种内存泄露情况以及相对应的解决方案,如果你还没有看过上篇文章,建议点击这里阅读一下,这篇文章我将要向大家介绍如何在我们的应用中使用square开源的LeakCanary库来检测应用中出现的内存泄露,如果你已经对LeakCanary的使用非常熟悉了请跳过本文(*^__^*) ……原创 2016-11-14 07:47:20 · 7081 阅读 · 0 评论 -
Android 源码系列之<十四>从源码的角度深入理解LeakCanary的内存泄露检测机制(下)
在上边文章Android 源码系列之<十三>从源码的角度深入理解LeakCanary的内存泄露检测机制(中)由于篇幅原因仅仅向小伙伴们讲述了在Android开发中如何使用LeakCanary来检测应用中出现的内存泄露,并简单的介绍了LeakCanary的相关配置信息。根据上篇文章的介绍我们知道LeakCanary为了不给APP进程造成影响所以新开启了一个进程,在新开启的进程中做内存泄露检测,这篇文章将要带领小伙伴们从源码的角度出发深入了解一下LeakCanary的内存泄露检测机制,希望能给小伙伴们一点帮助,原创 2016-12-12 09:14:57 · 9865 阅读 · 1 评论 -
Android 源码系列之<四>从源码的角度深入理解LayoutInflater.Factory之主题切换(上)
现在越来越多的APP都加入了换肤功能或者是日间模式和夜间模式等,这些功能不仅增加了用户体验也增强了用户好感,众所周知QQ和网易新闻的APP做的用户体验都非常好,它们都有日间模式和夜间模式的主题切换。实现主题切换的效果大部分是更换相关背景、字体颜色等,网上这篇文章对换肤讲解的比较不错,今天我们也是来从源码的角度来理解一下主题切换功能,如果你对这块非常熟悉了,请跳过本文(*^__^*) …原创 2016-05-04 18:16:22 · 8966 阅读 · 8 评论 -
Android 源码系列之<七>从源码的角度深入理解IntentService及HandlerThread
提起Service大家都很熟悉,它乃Android四(si)大(da)组(jing)件(gang)之一。但是说起IntentService有童靴或许有点陌生,看名字感觉和Service有关连。不错,不仅有关联而且关系还不一般,IntentService是Service的子类,所以它也是正宗的Service,由于IntentService借助了HandlerThread,我们今天就从源码的角度巴拉一下IntentService及HandlerThread,看看它们是何方神圣,如果你对它们非常熟悉,请跳过本文(原创 2016-05-30 07:47:32 · 4991 阅读 · 0 评论 -
Android 源码系列之<五>从源码的角度深入理解LayoutInflater.Factory之主题切换(中)
在上篇文章中我们主要讲解了LayoutInflater渲染xml布局文件的流程,文中讲到如果在渲染之前为LayoutInflater设置了Factory,那么在渲染每一个View视图时都会调用Factory的onCreateView()方法,因此可以拿onCreateView()方法做切入口实现主题切换功能。如果你不清楚LayoutInflater的渲染流程,请点击这里。今天我们就从实战出发来实现自己的主题切换功能。原创 2016-05-09 18:00:51 · 4566 阅读 · 7 评论 -
Android 源码系列之<六>从源码的角度深入理解LayoutInflater.Factory之主题切换(下)
在上篇文章中我们实现了在当前Activity进行主题切换的功能,如果你还没阅读过上篇文章请点击这里,在上篇文章结尾阐述了其中的不足,比如代码通用性以及页面跳转之后进行主题切换,返回之后无效果等,这篇文章主要是来解决以上问题的。原创 2016-05-14 11:25:32 · 3215 阅读 · 16 评论 -
Android 源码系列之<二>从安全的角度深入理解BroadcastReceiver(上)
提起BroadcastReceiver大家都很熟悉,它和Activity,Service以及ContentProvider并称为Android的四大组件(四大金刚),可见BroadcastReceiver的重要性,今天我们主要从安全的角度来讲解称为四大组件之一的BroadcastReceiver。原创 2016-04-21 10:34:46 · 2850 阅读 · 0 评论 -
Android 源码系列之<三>从安全的角度深入理解BroadcastReceiver(下)
在上一篇文章中我们结合实验讲解了有关使用BroadcastReceiver存在的安全性问题并且给出了相应的解决方案,如果你还没有看过上篇文章请点击这里,最后一条的解决方案是采用官方v4包中的LocalBroadcastManager来解决的,官方介绍说这种方式不仅安全而且更高效,今天我们就从源码的角度来了解一下LocalBroadcastManager,如果你对它非常熟悉,可以跳过本文了(*^__^*)原创 2016-04-24 13:21:19 · 4624 阅读 · 0 评论 -
Android 源码系列之<八>从源码的角度深入理解缓存策略之LruCache
在Android开发中缓存技术应用的十分广泛,我们最长见的是对图片进行缓存毕竟图片很耗内存的,目前比较著名的图片加载库比如Android-Universal-Image-Loader等都使用了缓存技术。缓存可分为三级,可分别表述为内存缓存、硬盘缓存和网络缓存,他们的加载顺序一般都是内存缓存→硬盘缓存→网络缓存。为了便于使用内存缓存,Google在其V4包中给我们提供了LruCache类,该类很重要,在面试的过程中也会经常会问到。今天我们就从源码的角度来深入理解LruCache类。如果你对LruCache非常原创 2016-08-01 07:54:19 · 1899 阅读 · 0 评论 -
Android 源码系列之<九>从源码的角度深入理解Activity的launchModel特性
本文主要通过在实际开发过程中遇见的两个APP相互打开出现运行在同一个任务栈的情况带领我们排查问题并找出问题所在,然后引出要讲解的重点:Activity的launchMode属性,最后结合案例列出了常见的各种情形并给出了总结。文中为了更清楚的查看当前任务的返回栈的情况,介绍了adb shell dumpsys activity activities命令……原创 2016-09-26 08:23:20 · 5101 阅读 · 0 评论 -
Android 源码系列之<十>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(上)
说起外挂特别是玩游戏的小伙伴估计对它很熟悉,肯定有部分小伙伴使用过,至于为什么使用它,你懂得(*^__^*) ……我最早接触外挂是在大二的时候,那时候盛行玩QQ农场,早上一睁眼就是打开电脑先把自己的菜收了,收完之后再去偷别人的;后来童靴说非凡软件上有一个偷菜外挂,于是赶紧整了一个,有了外挂之后就告别了体力时代,省时又省力……既然在PC上有外挂,那在智能手机上可以做外挂呢?答案是OK的,今天这篇文章就是讲解一下如何在Android设备上制作自己的小外挂,需要说明的是本文仅仅做技术交流……原创 2016-10-24 17:55:03 · 15661 阅读 · 3 评论 -
Android UI设计之<十四>自定义ViewGroup,实现绚丽的仿支付宝咻一咻雷达脉冲效果
去年春节的时候支付宝推行的集福娃活动着实火的不能再火了,更给力的是春晚又可以全民参与咻一咻抽奖活动集齐福娃就可平分亿元大红包,只可惜少了敬业福……在支付宝的咻一咻页面有个雷达扩散的动画效果,当时感觉动画效果非常棒,于是私下尝试着实现了类似的效果,后来在github发现有大神也写有类似效果,于是读了一下大神的代码发现我们的核心思想都是一样的,只是细节不同,然后我就择其善者而从之,把两份代码整合了一下......原创 2016-10-17 07:55:49 · 4964 阅读 · 1 评论 -
Android 源码系列之<十一>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(下)
在上篇文章Android 源码系列之<十>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(上)中我们讲解了通过AccessibilityService实现自动安装APK小外挂的操作流程,如果你还没有看过上篇文章请点击这里。在这篇文章中我将带领小伙伴从源码的角度来深入学习一下AccessibilityServie的技术实现原理,希望这篇文章能给小伙伴们一点帮助,如果你对这块很熟悉了,恭喜你可以过本文了(*^__^*) ……原创 2016-11-01 09:10:45 · 8278 阅读 · 4 评论 -
Android 源码系列之<十二>从源码的角度深入理解LeakCanary的内存泄露检测机制(上)
提到内存泄露有的小伙伴们可能遇见过,处理起来是非常棘手的。记得刚从事Android开发那会手机主流版本还是2.2的,手机内存普遍都很小,开发的时候在处理耗用内存过大的对象(比如Bitmap等)上,稍有不慎就会出现OOM,这很让人头疼,更为头疼的是发版后还是会收到有关OOM的反馈。为了解决OOM的问题就反复查代码捋逻辑,然后借助MAT工具来分析可能引发的内存泄露点,但是MAT使用起来很麻烦……直到去年著名的开源组织square在github上开源了著名的内存泄露检测库LeakCanary,它是专门用来检测内存原创 2016-11-09 09:03:19 · 3740 阅读 · 0 评论 -
Android 源码系列之<一>从源码的角度深入理解ImageView的ScaleType属性
做Android开发的童靴们肯定对系统自带的控件使用的都非常熟悉,比如Button、TextView、ImageView等。如果你问我具体使用,我会给说:拿ImageView来说吧,首先创建一个新的项目,在项目布局文件中应用ImageView控件,代码如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/an原创 2016-03-25 20:29:04 · 4158 阅读 · 2 评论