[……]
作者:chenzujie
WebAssembly使用入门介绍
WebAssembly是什么?
WebAssembly(通常缩写为wasm)是一种基于堆栈的虚拟机的二进制指令格式。它被设计为一种低级、可移植的字节码,可在Web浏览器和其他环境中执行,它设计的目的不是为了手写代码而是为诸如 C、C++和 Rust 等低级源语言提供一个高效的编译目标。
WebAssembly是一种新型的代码,可与HTML、CSS和JavaScript一起用于Web或者Nodejs开发。
WebAssembly比JavaScript具有许多优势。它更快,能够处理更多的数据,也更容易在不同的平台上实现相同的功能。
使用WebAssembly方式
WebAssembly 当前,有四个主要的着[……]
理解React Fiber
Why
What
How
首先我们看下React里定义的Fiber是一个什么数据结构,源代码里的数据字段比较多,我这里就精简写出跟Fiber树相关的几个字段
每个Element元素对应到一个Fiber节点 ,通过return记录父节点,child记录第一个孩子节点,sibling记录下一个兄弟节点,这样原本的树结构就转换成Fiber树结构。
Fiber架构可以分3层
1、Scheduler(调度器)
它的核心是利用window.requestIdleCallback()这个方法(react团队对这个方法做了改造),它会在浏览器有空闲时间的时候执行对应的任务,这[……]
Android中的NDK OpenGL
有过android开发经验应该或多或少地听说过OpengGL,甚至也行使用过framework提供的opengl包做过一些2d,3d相关的绘制,但事实上Android还提供了NDK方面的opengl能力,这个能力更接近真实的opengl,网上这部分的文章并不多,因此打算写一篇NDK相关的OpenGL。
什么是OpenGL
环境准备
提供Surface
获取当前平台窗口
接下来开始都是NDK部分的处理
获取 EGLDisplay 对象,建立与本地窗口系统的连接
获取 EGLConfig 对象,确定渲染表面的配置信息
创建渲染表面 EGLSurface
[……]
Activity启动流程简述
从Launcher启动
所谓的从Launcher就是点击手机上的app图标启动Activity,Launcher本身也是一个Activity,它启动app的首个Activity
Zygote启动了进程之后,其实就是直接进入到我们熟知的ActivityThread的main方法,然后启动个主线程Looper开始接受消息(了解Looper的应该对这部分逻辑一下子清晰了)
AMS与ActivityThread通信
创建Application
启动Activity
前面说的ActivityStackSupervisor的attachApplicati[……]
DataBinding源码解析
绑定类介绍
先从代码说起,使用DataBingding就从这么一行简单代码开始
数据通知
复杂对象的更新
当我们更新复杂对象内部的数据的,我们并没有直接调用Binding类的setXXX,它又是如何去更新的,其实前面的代码多少有点答案了,我们来看看源码
总结
[……]
Android-DataBinding使用简介
DataBinding在整个大前端算是一项很基础的技术,简单,高效,好用,有过客户端经验的都知道最开始客户端并没有支持这项技术,后来谷歌官方推出了对DataBinding的支持,大大简化了UI相关的开发成本,也推动了Android app架构从MVC向MVVM的进化,今天来介绍一波DataBinding的使用
引入DataBinding
引入很简单,在工程的build.gradle里打开databinding的开关即可