![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 86
呆萌的大逗
这个作者很懒,什么都没留下…
展开
-
Flutter的绘制流程简述
相对于React Native、Weex等跨平台框架,Flutter拥有自己的UI绘制体系,避免了React Native、Weex等跨平台框架与Native系统的桥接,从而更好的提升了性能。在Flutter中,UI都是一帧一帧的绘制,但这绘制的背后都会经过如下阶段。动画与微任务阶段,主要是处理动画及执行一系列微任务。构建阶段(build),找出标记为“脏”的节点与布局边界之间的所有节点,...原创 2019-11-25 21:28:09 · 1217 阅读 · 0 评论 -
Okio源码分析
【参考资料】拆轮子系列:拆 Okio原创 2019-02-14 20:36:20 · 914 阅读 · 0 评论 -
Android之ContentProvider源码解析
【参考资料】《Android艺术探索》[深入理解Android卷二 全文-第七章]深入理解ContentProvider从源码角度看ContentProvider原创 2019-01-29 12:43:11 · 794 阅读 · 0 评论 -
OkHttp之工作流程
OkHttp是Square开源框架之一,想必大家对它都很熟悉。它有同步及异步两种请求方式,具体使用如下。 public static void main(String... args) throws Exception { OkHttpClient client = new OkHttpClient(); Request request = new Request.Build...原创 2019-02-23 19:34:56 · 455 阅读 · 0 评论 -
OkHttp之Interceptor
在OkHttp之工作流程中介绍了OkHttp是如何进行同步及异步网络请求的。在原创 2019-02-23 19:35:18 · 308 阅读 · 0 评论 -
骨架屏(Skeleton Screen)在Android中的应用
在如今获取用户成本越来越高的情况下,好的用户体验能够更好的留住用户。为了提升产品的用户体验,各种技术层出不穷,其中,尤以菊花图以及由它衍生各种加载动画最为突出。 对于菊花图,想必是又爱又恨吧,它是仿IOS的,在Android端实现有一点麻烦。而如今有了比菊花图设计体验更棒的方法,即大家常看到的Skeleton Screen Loading,中文叫做骨架屏。 那什么是骨架屏尼?它的语义如下:...原创 2019-02-28 18:36:19 · 7515 阅读 · 0 评论 -
HTTP 2.0与OkHttp
原创 2019-02-25 15:25:38 · 3787 阅读 · 0 评论 -
毛玻璃效果在Android的实现
本文已授权「玉刚说」微信公众号独家发布毛玻璃效果实际上是对原图片的严重劣化,突出朦胧感,一般都是通过图片的缩放+模糊算法来实现,从性能角度考虑,模糊半径不能大于25,所以要更高的模糊效果则需要进行缩放。具体实现方案有以下几种。Java实现,一般都是采用Stack模糊算法RenderScript实现Native实现OpenCV或者OpenGL实现,由于其复杂度,本文暂不讨论该方案关...原创 2019-03-20 11:11:43 · 9561 阅读 · 1 评论 -
RxJava详解
RxJava是ReactiveX推出的一个开源库,它是Reactive Extensions的Java VM实现,可以很方便的在Java中实现响应式编程。解决了Java中繁琐的异步切换、Callback hell等问题,使逻辑变得更加简洁。1、操作符RxJava提供了丰富&功能强大的操作符,可以说这些操作符就是RxJava的基础及核心,所以学习RxJava都是从这些操作符开始。但由于R...原创 2019-06-08 20:03:00 · 6911 阅读 · 0 评论 -
不得不看的Flutter与Android混合开发
记得在flutter刚出来时,笔者就开始学习flutter。但由于当时嫌弃flutter复杂的层级组合且未推出稳定版,所以当时就放弃了深入学习,现如今随着flutter的蓬勃发展及大佬们的力推,就又入坑flutter。虽说flutter能够跨平台,但由于现在几乎都是现成的项目,所以不可能用flutter来重头开发,所以目前几乎都是采用native+flutter的混合开发方案。那么该方案该如何...原创 2019-06-16 09:26:18 · 6339 阅读 · 4 评论 -
一篇看懂Android与Flutter之间的通信
在不得不看的Flutter与Android混合开发一文中讲述了Android项目如何导入flutter模块,但有一个问题,就是它们之间还不能互相通信,但这又是非常必要的。所以本文就来讲述一下Android如何与flutter进行通信。1、架构概述消息通过平台通道在native(host)与flutter(client)之间传递,如下图所示:为了确保用户界面能够正确响应,消息都是以异步的方式...原创 2019-06-25 17:29:38 · 2261 阅读 · 6 评论 -
Flutter之Widget层级介绍
在flutter中,一切皆Widget。无论是显示界面的UI元素,如Text、Image、Icon等;还是功能性组件,如手势检测的GestureDetector组件、应用主题数据传递的Theme组件、移除系统组件自带Padding的MediaQuery组件等。可以说,flutter界面就是由一个个粒度非常细的Widget组合起来的。由于Widget是不可变的,所以当视图更新时,flutter会创...原创 2019-07-27 22:42:49 · 3266 阅读 · 0 评论 -
Flutter之事件处理
在学习flutter的时候突然想到,flutter既然不像其他跨平台框架那样采用系统原生渲染,那么flutter就应该拥有自己的事件处理机制。本着好奇的心理,来对flutter的事件处理机制一窥究竟。1、flutter事件传递事件都是由硬件收集起来的,然后传递给软件。那么在flutter中,事件的源头在哪尼?经过分析源码可以发现。在类window中,flutter通过方法onPointerD...原创 2019-08-19 21:07:53 · 4206 阅读 · 0 评论 -
Dart之Mixin详解
随着Dart学习的深入,发现了一个比较棘手的语法——mixin。它对于Java开发人员来说,是一个全新的概念,但也是深入学习Dart无法绕过的一个槛。那么mixin到底是什么尼???下面来看维基百科对它的定义。mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法、变量而不必成为其子类。简而言之,mixins是普通的类,我们可以从中扩展方法(或变量)而...原创 2019-08-19 21:08:51 · 10009 阅读 · 1 评论 -
Flutter之Widget大小与位置
在某些需求下,我们需要获取Widget的大小或位置信息。但Widget对象本身没有大小及位置数据,那么想要拿到Widget的大小及位置信息,就需要通过与Widget对象相关联的RenderBox对象来获取。下面就开始来获取Widget的大小与位置。1、获取RenderBox对象要想获取RenderBox对象,其实很简单。只需要调用BuildContext的findRenderObject方法...原创 2019-09-22 16:32:19 · 3826 阅读 · 0 评论 -
Android之Window与WindowManager
【参考资料】Android Activity应用窗口的创建过程分析原创 2019-01-15 22:20:56 · 612 阅读 · 0 评论 -
Glide之生命周期管理
;【参考资料】Glide生命周期管理Glide源码分析(一) 图片加载的生命周期原创 2019-01-09 13:10:30 · 1624 阅读 · 0 评论 -
Android源码分析之Activity启动流程
activity的启动比较复杂,所以先上流程图,具体后面再慢慢梳理 无论是启动一个应用,还是新启动一个activity,都是调用Activity的startActivityForResult方法,默认requestCode为-1,也就是认requestCode为-1时没有返回值。 public void startActivityForResult(@RequiresPermissi...原创 2018-12-20 20:36:19 · 332 阅读 · 0 评论 -
Android源码分析之LayoutInflater解析
参考Android LayoutInflater源码解析Android LayoutInflater源码解析:你真的能正确使用吗?原创 2018-12-21 15:10:06 · 251 阅读 · 0 评论 -
giflib加载GIF
giflib是一款用C语言写的加载GIF库,在性能方面比Glide要好很多,首先来看一下性能对比。glide加载gifgiflib加载gif 从上图中我们可以看出在CPU使用率上,giflib比glide好很多了,内存占用上giflib比glide也要好一些。那么如何使用giflib尼? 首先需要下载framesequence及giflib(以上网站需要翻墙,请自备梯子) gif...原创 2018-12-16 23:23:32 · 4731 阅读 · 0 评论 -
LeakCanary源码分析
leakcanary是原创 2018-12-17 13:25:44 · 231 阅读 · 0 评论 -
JNI子线程FindClass失败
1、在C语言里创建子线程 在进行jni开发时,Java调用C语言一般都处于主线程中的,但是使用JNI开发,很多情况都是需要开启子线程的(毕竟不能阻塞主线程),那么如何开启子线程尼?很简单,代码如下:void void *th_fun(void *arg) {}//是子线程的回调函数,我认为就相当于Java里的`Runnable`任务,但是在C语言里是可以传递参数的。pthread_creat...原创 2018-12-17 13:47:03 · 4790 阅读 · 0 评论 -
VirtualAPK的使用及插件加载
VirtualAPK的使用 VirtualAPK的使用还是蛮简单的,根据提供的文档一步一步来就可以了,但是其中有一点需要注意,那就是plugin的打包。plugin是且必须是一个apk文件,但是我们不能像正常打包流程那样进行打包,否则会抛出java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or de...原创 2018-12-17 14:24:53 · 846 阅读 · 0 评论 -
Android Binder的使用
Binder是一个深入的话题,由于Binder太过于复杂,所以本文不涉及底层细节,要想要知道底层细节可以去阅读写给 Android 应用工程师的 Binder 原理剖析、Android Bander设计与实现 - 设计篇这两篇文章。1、AIDL文件的创建及解析 Binder使用起来还是比较简单的,创建一个IBinderPool.aidl文件然后clean一下,就可以给我们生成一个Java文件...原创 2018-12-17 22:17:52 · 2615 阅读 · 0 评论 -
RxJava源码分析
&esmp;关于RxJava的实例应用可以参考Android RxJava实际应用教学:你该什么时候使用RxJava?原创 2019-01-03 17:57:52 · 143 阅读 · 0 评论 -
RxJava之线程切换原理分析
Scheduler翻译成中文就是“调度”的意思,在RxJava里就是线程之间的调度,也就是线程之间的切换。在RxJava里默认有5种实现。 从图中可以简单看出,SingleScheduler、ComputationScheduler、IoScheduler、NewThreadScheduler的核心实现就是一个线程池,但该线程池里只会有一个线程,而newScheduledThreadPool...原创 2018-12-29 23:59:51 · 2484 阅读 · 2 评论 -
Android之Service自启动流程
Service自动重启原理 无论Service是启动还是绑定成功后,都会调用ActiveServices的serviceDoneExecutingLocked方法,来看一下这个方法的实现。 void serviceDoneExecutingLocked(ServiceRecord r, int type, int startId, int res) { boolean i...原创 2019-01-04 15:51:30 · 3249 阅读 · 0 评论 -
Android源码之Service启动流程
Service在开发中使用得或许没有activity那么频繁,但它是Android四大组件之一,在Android中也是十分重要的,前面分析了activity的启动流程,这里也来分析一下Service是如何启动的。 Service分为两种工作状态,一种是启动状态,主要用于执行后台计算;另外一种是绑定状态,主要用于其他组件与Service的交互。需要注意的是,Service的两种状态是可以共存的,...原创 2018-12-30 21:19:26 · 864 阅读 · 0 评论 -
Android事件分发机制
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mInputEventConsistencyVerifier != null) { mInputEventConsistencyVerifier.onTouchEvent(ev, 1); } ...原创 2018-12-26 12:23:35 · 156 阅读 · 0 评论 -
Android源码分析之消息机制——Handler源码解析
Android的消息机制主要是指Handler的运行机制,Handler是Android消息机制上层接口的实现,它的运行需要Message、MessageQueue和Looper的支撑,下面就来分别介绍它们的实现原理。1、Message源码解析 首先来了解一下Message,它是消息的载体,Handler传递的消息必须按照Message格式来传递,实现了Parcelable接口,所以进程间通...原创 2018-12-26 12:23:59 · 252 阅读 · 0 评论 -
Android之Service使用详解
【参考资料】【移动开发】Service类onStartCommand()返回值和参数原创 2019-01-02 17:23:46 · 437 阅读 · 0 评论 -
Glide源码(基于4.8版本)解析
Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。 使用Glide来加载网络图片非常简单,通过Glide.with(this).load(url).init(imageView)这样的一句代码就可以搞定,虽然很简单,但是还是有必要了解...原创 2019-01-08 14:09:10 · 2399 阅读 · 0 评论 -
Android源码分析之View绘制流程
在Android的知识体系中,View扮演着很重要的的角色,简单来理解,View就是Android在视觉上的呈现。在界面上Android提供了一套GUI库,里面有很多控件,但很多时候系统提供的控件都不能很好的满足我们的需求,这时候就需要自定义View了,但仅仅了解基本控件的使用是无法做出复杂的自定义控件的。为所有了更好的自定义View,就需要掌握View的底层工作原理,比如View的测量、布局以...原创 2018-12-20 18:34:49 · 510 阅读 · 2 评论