常见框架介绍

1.5小米push,信鸽push

信鸽推送腾讯出品,王者荣耀推送也是用此可见其强大。

1.6 shareSDK,友盟统计

1.7网易云信即时通讯

1.8 bugly收集bug 腾讯内部使用后来开放出来,umeng 错误上报要2个小时左右才能看到,bugly 1分钟左右。 错误删选上 bugly 有用户id ,系统版本,设备等,比umeng多一点。

1.9第三方支付:微信支付 支付宝(alipay)。

1.9.1 Tinker热修复 :是微信官方发布的 Android 热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新;

原理:Tinker都利用了Android 的类加载机制,Android中有两个主要的Classloader,PathClassLoader和DexClassLoader,它们都继承自BaseDexClassLoader,Android系统通过PathClassLoader来加载系统类和主dex中的类。而DexClassLoader则可用于加载指定路径的apk、jar或dex文件。BaseDexClassLoader 中调用findClass,这个方法中会遍历dexpathlist中的dexElements数组,然后初始化DexFile。ClassLoader在加载到正确的类之后就会停止加载此类,因此我们将包含正确的类的Dex文件中插入在dexElements数组前面就可以完成对问题类的修复

流程:启动应用-》有无fix_classes.dex文件-》下载补丁 patch.dex-》开启TinkerPathService 和旧dex文件合并生成全量dex-》重新启动把这个全量dex elements前面 》完成修复

2.0通知eventBus

是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。

EventBus是在内部【存储】了一堆onEvent开头的方法,然后post的时候,根据post传入的【参数】,去找到匹配的方法,【反射】调用之。

另外,它内部使用了【Map】进行存储,【键就是参数的Class类型】。知道是这个类型,那么你觉得根据post传入的参数进行查找还是个事么?

其实不用发布者,订阅者,事件,总线这几个词或许更好理解,以后大家问了EventBus,可以说,就是在一个单例内部维持着一个map对象存储了一堆的方法;post无非就是根据参数去查找方法,进行反射调用。

1使用:

 EventBus.getDefault().register(this);  

onEventMainThread

onEventPostThread

onEventBackgroundThread

onEventAsync

EventBus.getDefault().unregister(this);  

2 register

根据传入的当前类,循环遍历该类内部所有方法匹配到“onEvent”开头的方法,封装到一个集合中。根据这个集合遍历优先级高的处理对象放到一个和对应类的subscriptionsByEventType的map集合中,键就是参数的Class类型,值就是封装的改类中的一些方法。

3 post

把我们post出去的event和subscriptionsByEventType这个map中的方法去遍历,得到了就用反射去去执行,在PostThread中直接调用,在MainThread,ui线程中就用handler去发送,在BackgroundThread和Async中是由  Eventbus中的一个线程池去调用

4 sticky

在register中,如果sticky为true,会去stickyEvents去查找事件,然后立即去post和post功能类型


2.1 greendao数据库

优点还包括以下几点:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成

效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍,目前git上一直在做更新维护,start数量为9000多。


2.1.1比较:Realm

1.易用:Ream 不是在SQLite基础上的ORM,它有自己的数据查询引擎。并且十分容易使用。

2.快速:由于它是完全重新开始开发的数据库实现,所以它比任何的ORM速度都快很多,甚至比SLite速度都要快。

3.跨平台:Realm 支持 iOS & OS X (Objective‑C & Swift) & Android。我们可以在这些平台上共享Realm数据库文件,并且上层逻辑可以不用任何改动的情况下实现移植。 

4.高级:Ream支持加密,格式化查询,易于移植,支持JSON,流式api,数据变更通知等高级特性

5.可视化


原理简介

GreenDao向SQLite数据库提供了一个对象导向的接口,它为用户省下了很多重复的工作,而且提供了简便的操作接口。在Java工程中需要导入需要的jar包,根据GreenDao的规则在其中描述数据库的表结构,运行之后它会构建你的实体模型和DAO工具类。具体包括:


DaoMaster:持有数据库对象(SQLiteDatabase),并管理一些DAO类(不是对象)

能够创建和删除数据库表它的内部类OpenHelper和DevOpenHelper是SQLiteOpenHelper的实现类,用于创建SQLite数据库的模式

DaoSession:管理制定模式下所有可用的DAO对象能对实体进行插入、加载、更新、刷新、删除操作。

DAO:每个实体都有一个DAO,这个dao就是拼接sql语句 去执行操作

Entit:可持久化的对象。我们通过@Entity对javabean进行注解,GreenDAO通过识别@Entity在编译期生成支持数据库的对象。

2.2、录音audiotrack

2.5 faceunity贴纸视频录制,FFmpeg处理视频

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序

2.6、金山云视频水印

2.7 Zxing二维码

2.8腾讯云•万象优图图片上传

背景:服务器对图片大小尺寸做了限制身份认证图片大小不够的话不清晰,才选用万象优图

腾讯云对象存储:包括CDN加速、优图处理、音视频转码、文件预览等组件,提供「存储 + 处理」一体化解决方案。同时 COS 可作为大数据计算的数据池,为大数据分析与计算提供数据源。

2.9、视频弹幕

compile 'com.github.ctiao:DanmakuFlameMaster:0.6.4'

DanmakuFlameMaster是 Android 上开源弹幕解析绘制引擎项目,也是 Android 上最好的开源弹幕引擎·烈焰弹幕。其架构清晰,简单易用,支持多种高效率绘制方式选择,支持多种自定义功能设置上。

目前,DanmakuFlameMaster开发包已被包括优酷土豆、开迅视频、MissEvan、echo回声、斗鱼TV、天天动听、被窝声次元、ACFUN 等 APP 使用

原理:

因此整个弹幕可以说就是根据一个计时器更新时间,并根据时间计算弹幕位置,实现弹幕的滑动效果

3.1 Airbnb全屏动画

动画的实现方式:

View Animation: 视图动画在古老的Android版本系统中就已经提供了,只能被用来设置View的动画。

Drawable Animation: 这种动画(也叫Frame动画、帧动画)其实可以划分到视图动画的类别,专门用来一个一个的显示Drawable的resources,就像放幻灯片一样。

Property Animation: 属性动画只对Android 3.0(API 11)以上版本的Android系统才有效,这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的动画。

Lottie是Airbnb开源的一个支持 Android、iOS 以及 ReactNative,利用json文件的方式快速实现动画效果的库

在Android动画中,总共有两种类型的动画View Animation(视图动画)和Property Animator(属性动画);

其中

•View Animation包括Tween Animation(补间动画)和Frame Animation(逐帧动画);

•Property Animator包括ValueAnimator和ObjectAnimation;


3.2 RxJava/ RxAndroid

响应式编程(Reactive programming)不是一种API,而是一种新的非常有用的范式,而RxJava就是一套基于此思想的框架,在Android开发中我们通过这个框架就能探索响应式的世界,同时结合另一个库,RxAndroid,这是一个扩展库,更好的兼容了Android特性,比如主线程,UI事件等

RxJava是一个用于通过使用观察序列构成异步和基于事件的程序库。

RxJava作为一个工具库,使用的就是通用形式的观察者模式。

RxJava的观察者模式

RxJava有四个基本概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。


3.3 dagger2

Dagger2是一个依赖注入框架,现在由Google接手维护。

Butter Knife,专门为Android View设计的绑定注解,专业解决各种findViewById。

目前主流的注解框架有xUtils、ButterKnife、Dragger 和 Roboguice,它们的实现原理都是一致的,都是通过反射机制实现的。通过在Runtime运行期去反射类中带有注解的Field和Method,然后再去执行注解相对应的逻辑代码。大家都知道反射机制是在APP的运行期执行的,会造成执行的效率下降,执行时间变长的缺点。

依赖注入的框架需要开启额外的服务,来扫描App中代码的Annotation,所以需要额外的系统资源, 当在我们 APP 中大量的使用基于反射的注解,会严重影响到性能。

3.3.1 Kotlin

Kotlin是JetBrains开发的基于JVM的语言,JetBrains想必大家应该很熟悉了,他们创造了很多强大的IDE,android studio谷歌官方的android IDE就是基于Intellij,kotlin可以作为一个插件被用来开发android跟java比kotlin有什么好处?

1.它更容易表现,使用kotlin你可以少写很多代码,比如创建数据类等。

2.它更安全,在用Java开发时,大多数代码都是预防性的。为了不遇到非预期的NullPointerException,在使用之前,要不断的检测对象是否为空。与许多其它语言一样,因为需要使用安全调用运算符显式指明对象是否能够为空(null),所以Kotlin是空类型安全的

3.它是函数式的,Kotlin是基于面向对象的语言。但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。

4.它可以扩展函数,这意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类

3.4、熟练掌握reactJs/react native ,原生混合开发 Web app混合开发。

3.5,熟悉Hybrid混合模式编程,熟悉NDK编程

Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之间的app,兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容