- 博客(44)
- 资源 (31)
- 收藏
- 关注
原创 ArkUI实战,自定义下拉刷新组件RefreshList
下拉刷新是一个高频使用的功能,ArkUI 开发框架也提供了下拉刷新组件 Refresh ,该组件的使用非常简单,读者可参阅笔者在《ArkUI实战》第六章 第 5 小节 的介绍,本文笔者讲解一下笔者在项目上实现的一个下拉刷新组件 RefreshList
2023-02-15 22:58:20 993 1
原创 ArkUI实战,深入浅出OpenHarmony应用开发
在学习 OpenHarmony 应用开发的时候经常去 OpenHarmony 的相关仓库查看文档,有时候找文档并不是很顺利,于是自费建设了该网站,利用业余时间写了这本入门的《ArkUI实战》电子书把它挂到网站上,希望能给大家带来一点帮助,也算为 OpenHarmony 的发展做一点贡献吧。
2022-05-24 15:10:41 2044
原创 Flutter源码系列之《一》Flutter的热更新探索(下)
在前两篇文章Flutter源码系列之《一》Flutter的热更新探索(上)和Flutter源码系列之《一》Flutter的热更新探索(中)我们分析了Flutter引擎的初始化流程,然后根据启动流程找到了实现热修复的方法,原理就是使用Hook的方式替换系统的FlutterLoader从而实现了代码热修复功能,当时在采用Hook的方式的时候有提到还有其他方式实现热修复功能,今天我们就尝试使用新的方式实现热修复,这篇文章是在前边两篇文章的基础上写的,在阅读这篇文章之前最好有看过前边的两篇文章。
2020-04-13 13:21:11 1811 3
原创 Flutter源码系列之《二》浅谈Flutter的状态管理库Provider
Flutter开发过程中一个常见的问题就是状态管理,所谓状态管理就是管理Flutter的Widget状态,对于Flutter的状态管理,社区上已有多种成熟的方案:Provider、Redux、MobX、BLoC等。在这些方案里Google建议我们使用Provider,接下来我们就学习下Provider,看它是如何做到的状态管理,在了解其原理之前,我们先看下它的使用。
2020-04-11 13:31:34 1356
原创 Flutter源码系列之《一》Flutter的热更新探索(中)
在上篇文章Flutter源码系列之<一>Flutter的热更新探索(上)我们分析了Flutter的加载流程,找到了实现热更新的方法,接下来我们开始实现热更新功能。
2020-02-22 21:57:45 1091
原创 Flutter源码系列之《一》Flutter的热更新探索(上)
在Google发布Flutter之后我一直对它保持很高的热情,尤其是Flutter支持热更新,但在1.7.8版本之后由于某些原因Google屏蔽了热更新功能,这着实让让人失落……于是抽了点时间研究了一下Flutter的加载过程,目的是找到可以实现热更新的方式
2020-02-22 21:56:20 2449
原创 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 343
原创 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 1583 1
原创 Android 源码系列之【二十一】从源码的角度深入理解SafeIterableMap
转载请注明出处:https://blog.csdn.net/llew2011/article/details/85222413说起HashMap想必小伙伴们都非常熟悉吧,它出现在面试中的概率是很高的,网上有很多文章对它的实现原理做了详细的分析,这里不再做过多的论述,今天给大家带来的是一个新的集合类SafeIterableMap,直接看名字貌似是一个Map类,但是它并没有实现Map接口,而是采用...
2018-12-31 23:55:29 1012
原创 Android 源码系列之<二十>通过反射解决在HuaWei手机出现Register too many Broadcast Receivers的crash
Android开发适配问题一直是一个让人头疼的话题,由于国内很多厂商都有对原生Android系统做不同的定制,结果导致适配起来很麻烦。印象最深的一个适配是让Notification的背景色做到和系统通知栏背景色一致,然后就是想各种办法做适配……近来在Bugly上查看统计APP的crash日志的时候发现有一个crash日志很诡异,该crash只发生在HuaWei手机上,截取部分Crash日志如下所示:
2018-01-13 23:25:05 13793 16
原创 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 1348 3
原创 Android 源码系列之<十八>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<中>
在上篇文章Android 源码系列之<十七>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<上>中由于篇幅原因我们主要讲解了如何创建自定义Gradle Plugin以及修复第三方Jar包中的bug的思路,如果你还没看过上篇文章,强烈建议阅读一下。这篇文章就带领小伙伴们借助Javassist开源库实现对class文件的修改。
2017-11-16 10:52:28 2151 8
原创 Android 源码系列之<十七>自定义Gradle Plugin,优雅的解决第三方Jar包中的bug<上>
我们在开发中经常用到一些优秀的第三方库,比如okhttp,glide,butterknife等。这些库不仅提高了开发效率而且避免踩坑,假如在应用中这些开源库出现了bug,我们随时可以从GitHub下载源码进行bug修改。但是项目中使用的库不是开源的并且该库又存在bug,由于没有源码也就无法进行bug的修复,一般做法就是给非开源库的作者或组织反馈bug等他们进行修复,如果他们修复的及时还好说,一旦他们更新不及时就会给我们APP造成不好影响(比如用户流失)……这篇文章我就给小伙伴们讲解一下如何自定义Gradle
2017-11-15 15:00:20 5601 3
原创 Android 源码系列之<十六>,深入浅出WebSocket,打造自己的即时聊天交互系统<下>
在上篇文章Android 源码系列之<十五>,深入浅出WebSocket,打造自己的即时聊天交互系统<上>中主要讲解了WebSocket协议,然后通过实战方式展示了WebSocket的通信过程,这篇文章我将从源码的角度带领小伙伴们深入理解一下autobahn以及okhttp的Socket通信源码,如果你对上述项目的WebSocket实现比较清楚了,请跳过本文(*^__^*) ……
2017-08-07 17:55:42 13891 2
原创 Android 源码系列之<十五>,深入浅出WebSocket,打造自己的即时聊天交互系统<上>
做Java开发的小伙伴们应该对Socket比较熟悉,在J2SE的Socket编程这一章节中专门对Socket通信做了详细介绍,当时自学完该章节后只知道Socket是端到端通信的,Server端根据指定端口打开Socket链接,然后等待客户端来连接;客户端根据Server端IP地址和端口创建一个Socket通道,根据该通道和Server端进行通信。后来在工作中有使用Socket通信,使用场景是聊天和推送,当时为了项目进度就在GitHub上找了一个不错的开源库autobahn-java中应用在项目中,功能实现之
2017-06-07 09:24:56 4982 1
原创 Android 源码系列之<十四>从源码的角度深入理解LeakCanary的内存泄露检测机制(下)
在上边文章Android 源码系列之<十三>从源码的角度深入理解LeakCanary的内存泄露检测机制(中)由于篇幅原因仅仅向小伙伴们讲述了在Android开发中如何使用LeakCanary来检测应用中出现的内存泄露,并简单的介绍了LeakCanary的相关配置信息。根据上篇文章的介绍我们知道LeakCanary为了不给APP进程造成影响所以新开启了一个进程,在新开启的进程中做内存泄露检测,这篇文章将要带领小伙伴们从源码的角度出发深入了解一下LeakCanary的内存泄露检测机制,希望能给小伙伴们一点帮助,
2016-12-12 09:14:57 9854 1
原创 Android 源码系列之<十三>从源码的角度深入理解LeakCanary的内存泄露检测机制(中)
在上篇文章Android 源码系列之<十二>从源码的角度深入理解LeakCanary的内存泄露检测机制(上)中主要介绍了Java内存分配相关的知识以及在Android开发中可能遇见的各种内存泄露情况以及相对应的解决方案,如果你还没有看过上篇文章,建议点击这里阅读一下,这篇文章我将要向大家介绍如何在我们的应用中使用square开源的LeakCanary库来检测应用中出现的内存泄露,如果你已经对LeakCanary的使用非常熟悉了请跳过本文(*^__^*) ……
2016-11-14 07:47:20 7064
原创 Android 源码系列之<十二>从源码的角度深入理解LeakCanary的内存泄露检测机制(上)
提到内存泄露有的小伙伴们可能遇见过,处理起来是非常棘手的。记得刚从事Android开发那会手机主流版本还是2.2的,手机内存普遍都很小,开发的时候在处理耗用内存过大的对象(比如Bitmap等)上,稍有不慎就会出现OOM,这很让人头疼,更为头疼的是发版后还是会收到有关OOM的反馈。为了解决OOM的问题就反复查代码捋逻辑,然后借助MAT工具来分析可能引发的内存泄露点,但是MAT使用起来很麻烦……直到去年著名的开源组织square在github上开源了著名的内存泄露检测库LeakCanary,它是专门用来检测内存
2016-11-09 09:03:19 3726
原创 Android 源码系列之<十一>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(下)
在上篇文章Android 源码系列之<十>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(上)中我们讲解了通过AccessibilityService实现自动安装APK小外挂的操作流程,如果你还没有看过上篇文章请点击这里。在这篇文章中我将带领小伙伴从源码的角度来深入学习一下AccessibilityServie的技术实现原理,希望这篇文章能给小伙伴们一点帮助,如果你对这块很熟悉了,恭喜你可以过本文了(*^__^*) ……
2016-11-01 09:10:45 8248 4
原创 Android 源码系列之<十>从源码的角度深入理解AccessibilityService,打造自己的APP小外挂(上)
说起外挂特别是玩游戏的小伙伴估计对它很熟悉,肯定有部分小伙伴使用过,至于为什么使用它,你懂得(*^__^*) ……我最早接触外挂是在大二的时候,那时候盛行玩QQ农场,早上一睁眼就是打开电脑先把自己的菜收了,收完之后再去偷别人的;后来童靴说非凡软件上有一个偷菜外挂,于是赶紧整了一个,有了外挂之后就告别了体力时代,省时又省力……既然在PC上有外挂,那在智能手机上可以做外挂呢?答案是OK的,今天这篇文章就是讲解一下如何在Android设备上制作自己的小外挂,需要说明的是本文仅仅做技术交流……
2016-10-24 17:55:03 15596 3
原创 Android UI设计之<十四>自定义ViewGroup,实现绚丽的仿支付宝咻一咻雷达脉冲效果
去年春节的时候支付宝推行的集福娃活动着实火的不能再火了,更给力的是春晚又可以全民参与咻一咻抽奖活动集齐福娃就可平分亿元大红包,只可惜少了敬业福……在支付宝的咻一咻页面有个雷达扩散的动画效果,当时感觉动画效果非常棒,于是私下尝试着实现了类似的效果,后来在github发现有大神也写有类似效果,于是读了一下大神的代码发现我们的核心思想都是一样的,只是细节不同,然后我就择其善者而从之,把两份代码整合了一下......
2016-10-17 07:55:49 4949 1
原创 Android UI设计之<十三>自定义ScrollView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
之前写过一篇Android UI设计之<十>自定义ListView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果的文章,写完那篇文章后想趁热打铁再写一篇用ScrollView来实现同样效果的文章,可是写了点开头就没有继续写下去了,当时想的是等用到再写吧,于是把它扔在了草稿箱中。近来恰好有用到,赶紧就把该文章补充完整发表出来,希望能给大家一点帮助......
2016-10-08 08:09:31 6671 2
原创 Android 源码系列之<九>从源码的角度深入理解Activity的launchModel特性
本文主要通过在实际开发过程中遇见的两个APP相互打开出现运行在同一个任务栈的情况带领我们排查问题并找出问题所在,然后引出要讲解的重点:Activity的launchMode属性,最后结合案例列出了常见的各种情形并给出了总结。文中为了更清楚的查看当前任务的返回栈的情况,介绍了adb shell dumpsys activity activities命令……
2016-09-26 08:23:20 5086
原创 Android 源码系列之<八>从源码的角度深入理解缓存策略之LruCache
在Android开发中缓存技术应用的十分广泛,我们最长见的是对图片进行缓存毕竟图片很耗内存的,目前比较著名的图片加载库比如Android-Universal-Image-Loader等都使用了缓存技术。缓存可分为三级,可分别表述为内存缓存、硬盘缓存和网络缓存,他们的加载顺序一般都是内存缓存→硬盘缓存→网络缓存。为了便于使用内存缓存,Google在其V4包中给我们提供了LruCache类,该类很重要,在面试的过程中也会经常会问到。今天我们就从源码的角度来深入理解LruCache类。如果你对LruCache非常
2016-08-01 07:54:19 1886
原创 Android UI设计之<十二>自定义View,实现绚丽的字体大小控制控件FontSliderBar
了解iOS的同学应该知道在iOS中有个UISliderBar控件,在iPhone手机中的设置文字大小中使用了该控件。近来产品提的需求中有一个是更改APP中部分字体大小,虽然技术难度不大但工作量还是有的,思路是利用LayoutInflater.Factory实现的(如果你对LayoutInflater.Factory不熟悉可以阅读之前写的Android 源码系列之<四>从源码的角度深入理解LayoutInflater.Factory之主题切换系类文章)。UI是参考iOS的UISliderBar设计的,而And
2016-07-11 07:45:57 6644 23
原创 Android UI设计之<十一>自定义ViewGroup,打造通用的关闭键盘小控件ImeObserverLayout
之前产品那边提了这样的需求:用户输入完信息后要求点击非输入框时要把软键盘隐藏。当时看到这个需求觉得没啥难度也比较实际,于是晕晕乎乎的就实现了,可后来产品那边说了只要有输入框的页面全都要按照这个逻辑来,美其名曰用户体验……当时项目中带有输入框的页面不少,如果每个页面都写一遍逻辑,这就严重违背了《重构,改善既有代码的设计》这本书中的说的事不过三原则(事不过三原则说的是如果同样的逻辑代码如果写过三遍以上,就要考虑重构)。于是当时花了点时间搞了个通用的轻量级的关闭键盘的小控件ImeObserverLayout……
2016-06-20 07:46:21 5433 8
原创 Android UI设计之<十>自定义ListView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
好久没有写有关UI的博客了,刚刚翻了一下之前的博客,最近一篇有关UI的博客是在2014年写的:Android UI设计之<七>自定义Dialog,实现各种风格效果的对话框。近来项目有个需求,要做个和QQ空间类似的菜单栏透明度渐变和下拉刷新带有阻尼回弹的效果。于是花点时间动手试了试,基本上达到了QQ空间的效果
2016-06-06 07:52:24 10777 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 4975
原创 Android 源码系列之<六>从源码的角度深入理解LayoutInflater.Factory之主题切换(下)
在上篇文章中我们实现了在当前Activity进行主题切换的功能,如果你还没阅读过上篇文章请点击这里,在上篇文章结尾阐述了其中的不足,比如代码通用性以及页面跳转之后进行主题切换,返回之后无效果等,这篇文章主要是来解决以上问题的。
2016-05-14 11:25:32 3212 16
原创 Android 源码系列之<五>从源码的角度深入理解LayoutInflater.Factory之主题切换(中)
在上篇文章中我们主要讲解了LayoutInflater渲染xml布局文件的流程,文中讲到如果在渲染之前为LayoutInflater设置了Factory,那么在渲染每一个View视图时都会调用Factory的onCreateView()方法,因此可以拿onCreateView()方法做切入口实现主题切换功能。如果你不清楚LayoutInflater的渲染流程,请点击这里。今天我们就从实战出发来实现自己的主题切换功能。
2016-05-09 18:00:51 4553 7
原创 Android 源码系列之<四>从源码的角度深入理解LayoutInflater.Factory之主题切换(上)
现在越来越多的APP都加入了换肤功能或者是日间模式和夜间模式等,这些功能不仅增加了用户体验也增强了用户好感,众所周知QQ和网易新闻的APP做的用户体验都非常好,它们都有日间模式和夜间模式的主题切换。实现主题切换的效果大部分是更换相关背景、字体颜色等,网上这篇文章对换肤讲解的比较不错,今天我们也是来从源码的角度来理解一下主题切换功能,如果你对这块非常熟悉了,请跳过本文(*^__^*) …
2016-05-04 18:16:22 8950 8
原创 Android 源码系列之<三>从安全的角度深入理解BroadcastReceiver(下)
在上一篇文章中我们结合实验讲解了有关使用BroadcastReceiver存在的安全性问题并且给出了相应的解决方案,如果你还没有看过上篇文章请点击这里,最后一条的解决方案是采用官方v4包中的LocalBroadcastManager来解决的,官方介绍说这种方式不仅安全而且更高效,今天我们就从源码的角度来了解一下LocalBroadcastManager,如果你对它非常熟悉,可以跳过本文了(*^__^*)
2016-04-24 13:21:19 4613
原创 Android 源码系列之<二>从安全的角度深入理解BroadcastReceiver(上)
提起BroadcastReceiver大家都很熟悉,它和Activity,Service以及ContentProvider并称为Android的四大组件(四大金刚),可见BroadcastReceiver的重要性,今天我们主要从安全的角度来讲解称为四大组件之一的BroadcastReceiver。
2016-04-21 10:34:46 2837
原创 Android React-Native系列之<二>零基础学习React-Native控件之View
在上一篇博文中已经讲解了React-Native开发环境的搭建流程,还没有搭建好环境的童靴可以参照Android React-Native系列之<一>零基础搭建React-Native开发环境或者是参照其他大神的博文。今天主要讲解的是React-Native下的View组件的学习,如果你已经掌握了View控件的相关知识那你就可以跳过本文了(*^__^*)......
2016-04-08 17:39:36 3060
原创 Android React-Native系列之<一>零基础搭建React-Native开发环境
很早就听说过大名鼎鼎的React-Native了(不大清楚的童靴们可以自行了解,这里不再详述),由于进来公司业务不是太繁忙,恰好可以有时间来学习一下RN,我们知道学习任何一门语言,搭建环境是第一步,本篇博文主要是来介绍RN的环境搭建流程。
2016-04-05 22:58:38 10856 1
原创 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 4154 2
原创 Android UI设计之<七>自定义Dialog,实现各种风格效果的对话框
虽然Android给我们提供了众多组件,但是使用起来都不是很方便,我们开发的APK都有自己的风格,如果使用了系统自带的组件,总是觉得和应用的主题不着边际并且看起来也不顺心,那我们就需要自定义了,为了方便大家对自定义组件的学习,我接下来准备了几遍有关自定义的Dialog的文章,希望对大家有帮助。
2014-07-08 20:23:09 3344
原创 Android UI设计之<六>使用HTML标签,实现在TextView中对部分文字进行加粗显示
搞软件开发的都知道项目中各种需求都有,而有时候各种奇葩的需求真是让人大跌眼镜,为了实现这些奇葩的需求我们往往苦逼的废寝忘食,我现在的项目中就有一个应该算得上奇葩的需求吧,需求是这样的:在一段文字中实现对部分文字加粗
2014-06-25 10:40:39 12905
Android UI设计之<十四>自定义ViewGroup,实现绚丽的仿支付宝咻一咻雷达脉冲效果
2016-10-16
Android UI设计之<十三>自定义ScrollView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
2016-10-09
自定义ScrollView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
2016-10-09
自定义ListView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
2016-06-06
Android LayoutInflater.Factory主题切换
2016-05-13
Android自定义DrawView组件实现数字签名效果
2014-06-21
Android自定义属性实现带边框效果的TextView
2014-06-13
Android使用ImageView仿照ProgressBar旋转效果
2014-05-30
android应用开发
2013-01-12
xpp3_min.jar
2012-04-27
sqlserver2000 驱动 jsutil.jar msbase.jar mssqlserver.jar
2012-02-24
HTMLParser-2.0-API.CHM
2011-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人