Android中JSBridge的原理与实现

首先我们来了解一下什么是JSBridge和为什么要使用JSBridge?

在开发中,为了追求开发的效率以及移植的便利性,一些展示性强的页面我们会偏向于使用h5来完成,功能性强的页面我们会偏向于使用native来完成,而一旦使用了h5,为了在h5中尽可能的得到native的体验,我们native层需要暴露一些方法给js调用,比如,弹Toast提醒,弹Dialog,分享等等,有时候甚至把h5的网络请求放到native去完成。

JSBridge做得好的一个典型就是微信,微信给开发者提供了JSSDK,该SDK中暴露了很多微信native层的方法,比如支付,定位等。

本文将对js和Native的通信原理和实现方法的一些探讨。

感冒的分类及治疗

感冒了去医院看病,尤其是孩子的感冒,更是让人操碎了心,而去了医院,又被医生绕晕了,一会儿风寒,一会儿又是病毒型的,真是头晕,作为程序员,咱应该把它搞清楚对吧,知根知底,下次做到心中有数,行动不乱。这篇文章就从分类上详细的说一下,同样是感冒,但从中医来看,感冒分风寒感冒、风热感冒;西医又把感冒分为病毒性的和细菌性的,还有流感病毒引起的流感,这个很严重,需要大家重视(不严重?请君看看当年的SARS,和《流感下的北京中年》)。

ClassLoader详解

大家都知道,一个Java程序编译之后,是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异常。而程序在启动的时候,并不会一次性加载程序所要用的所有class文件,而是根据程序的需要,通过Java的类加载机制(ClassLoader)来动态加载某个class文件到内存当中的,从而只有class文件被载入到了内存之后,才能被其它class所引用。所以ClassLoader就是用来动态加载class文件到内存当中用的。

Android快速加载Dex

DexFile类的LoadDex方法可以动态加载Dex文件,但是,这个类有一个缺陷,就是第一次启动并加载一个dex文件时,(尤其在ART模式)需要花费很长的时间。因为它会执行一次dexopt(art以下)或dex2oat(art及以上)操作。
正常情况下不会感觉到它的不足,但是当你在App中使用插件化框架的时候,这个缺点会放大。
本篇总结了几个解决此问题的方法

Retrofit2学习笔记

时至今日,Android的网络框架不再像之前那么到处都是,随着Google把HttpClient直接删掉,似乎意味着Android越来越成熟。网络框架中的佼佼者Volley也不再那么光鲜,取而代之的是Retrofit和okHttp。 这两个网络库都是Square这个牛逼的公司出品的,这个公司出品了好多开源库, 大家有兴趣可以去了解下.

作为一个资深的Android从业者(呵呵~), 一直没有好好研究过retrofit, 这次下定决心要好好研究一下包括Retrofit + okHttp + RxJava等一系列新技术, 免得被时代抛弃.