Csdn /Tamic

原文地址:

http://blog.csdn.net/sk719887916/article/details/53525067

本文章6月份已完成(http://www.jianshu.com/p/8ed9543b15db),已被多个公司或个人公众号邀稿推送


纵观移动开发 , 新技术出现层出不穷,除了第三方开源个人的一些技术分享,主要还是谷歌,FaceBook,Square这种驱动型技术公司的技术驱动引领,也有国内阿里,百度,携程的基于国外框架拓展的一些主流框架推出,其实看看最近一年,从最初的图片加载框架ImageLoader到React Native的出现,最终到目前响应式编程的广泛推崇。你就会发现谷歌面向的思维越来越灵活化。

2015年流行的图片加载库

Picasso

Square公司的开源项目,Square公司的网络库okHttp一起能发挥最大作用。自身无缓存功能,依赖库okHttp实现

Fresco

FB的明星项目,也是去年最火的项目之一,匿名共享缓存等机制保证低端机表现极佳,但是源代码基于C/C++,阅读困难度提升。

Glide,

Google员工私人项目,但是Google很多项目在用,相对Picasso在Gif方面有优势。

线程通信库:

EventBus

基于订阅和被订阅的观察者模式的实现的线程通信框架,一边注册订阅,一边回调处理。

RxJava

基于订阅和被订阅的观察者模式的实现的线程通信框架, 支持线程自由切换,一推出就让rx响应式编程火到了极致,让代码阅读爽的极致,相信不久的将来Rx系列思想将风靡全球.

地址:https://github.com/ReactiveX/RxJava

除了以上比较通用的开源项目,你也应该看看以下流行的前沿技术

开发工具

Android Studio: Google 官方放弃 Eclipse以后 对Android Studio 推广普及。AS 虽然不算新,但是对 Android Studio 这个软件的更新速度快的惊人,有大量的新功能发布 目前已经到了2.2。例如支持很多注解代码提示注解、Live code template、支持自动生成 Parcelable 实现,运行时编译等等,作为开发者,持续关注这个更新列表 Recent Changes ,一定会让你的写代码的生活更加爽。

Kotlin

作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试? 使用Kotlin进行Android开发。

跨平台

React Native

跨平台一直是开发者的梦想,而且移动应用的跨平台解决方案目前也很多,在Facebook 的参与和力推下,让这个解决方案带上了光环。第一个用 React Native 开发的 App 已经在 Google Play 上架 Facebook 广告管理工具,听说 Android 的 SDK 也马上会到来,国内天猫团队以及在去年10月首次实现,携程也基于React Native推出mouse, 其他公司也相继进行了试点开发,相信不久后会有更多的框架封装的出现。地址:https://github.com/facebook/react-native

Weex

基于 React Native 的启发, 阿里发起的跨平台前端技术,兼容iOS和Android, 目前开发者还处在观望中,据说不是很稳定,相信不久将来必定普及!:项目地址:https://github.com/alibaba/weex

Sky

与 React Native 类似,使用 Web 开发语言来做移动平台的开发,虽然这个只是一个尝试,但是这是 Google 自身推出的,特别是在 Java 语言的使用上败诉之后,这可能会有一些作为呢,domokit/sky_sdk · GitHub

开发模式

Dagger 2

依赖注入并不是什么新技术,web端的spring的成功已让开发者有目共堵,在 Android 确实一个新的尝试。Android App 越来越被当成严肃的大型项目来构建,很多在以前大型服务器开发上使用的技术都被应用到了移动开发。Android 开发分模块开发,使用 Dagger 来松耦合模块。特别值得一体的是,Dagger 2 现在由 Google 亲自接管。 Dagger ‡ A fast dependency injector for Android and Java.

架构模式

MVP

因为 Android 并没有严格的业务和界面区分,项目一庞大,就很容易使代码结构显得越来越乱。现在 Android 端对 MVP 模式讨论越来越热,谷歌6.0API以及更多的体现了MVP设计思维,觉得 MVP 是非常适合 Android 上的APP 开发。MVP for Android: how to organize the presentation layer

MVVM :

这是因为开始官方支持 DataBinding,把 MVVM 直接带到 Android 中。数据绑定在 Windows WPF 和 Web (尤其JSP中)已经非常常见,它非常高效的开发效率,让你只关心你的数据和业务。这也对 Android 开发来说,无疑是一个非常重大的里程碑

RxAndroid:

函数响应式编程(Functional Reactive Programming)也不是新内容,RxAndroid 把 RxJava 带到 Android 环境中。很多时候,编写 Android 程序,你也可以看成是数据的处理和流动,换一种思想编程,曾经看起来很棘手的问题,瞬间就很优雅的解决了,相信你会被这种build模式的开发会越来越爱

插件模块化

虽然插件化开发已不是什么新鲜事,但是很是属于少数公司能做的起来的工程,针对大型 Android 项目,基于频繁发包,很多 App 开始使用插件来分模块构建相对独立的功能,著名的有DL,360Plugin, 携程,阿里都有自己的开源项目。

Hybrid

完全使用 H5 开发 App,目前已很成熟,但是体现并不很好。可以短时间内更新APP UI,适配能力超强,但是基于流量严重,但是折中方案在很多情况下是非常适合的,典型的就是淘宝微信,大部分信息展示都是通过 H5 来完成,同时通过 Hybird 方式,把 Web 和 Native 打通,提供给网页访问Native的能力。

这是广告: Tamic :http://blog.csdn.net/sk719887916/article/details/53525067

UI风格

Material Design

已经的不能再火了,这方面的讨论实在太多了,而且各种各样的库,相信你以前写几个类的控件,现在你只要一行代码,特别是 Google 官方出了一个支持库 Android Design Support Library之后,你依旧可以在低版本上实现高效果UI。

Sketch 3

这是一个专为设计移动端 UI 的设计工具,作为开发者,不用懂那么复杂的 PS 使用,也可以做非常专业设计:https://designcode.io/sketch

网络框架

Okhttp

Square公司推出的网路库,采用链式思想,让开发起来简易很多,谷歌已在android6.0采用默认请求库,相信他的强大让你瞬间震撼!

Retrofit

一款基于异步线程的网络请求框架,一款android安全类型的http客户端,支持线程安全,开发者无需关注线程问题,同样是基于链式编程思想的一款网络请求利器。配合基友Rxjava,让你的app强大到极致,Retrofit 从2015年就已经诞生了,为何直到2016年初才被广泛用起来呢 一种是大家还是对新技术的观望态度,没能立马火起来,后期主要还是谷歌自身推广okhttp的广泛运用和面向响应式编程的启发,加之RXJava的兴起,况且Retrofit 2.0自身支持okHttp和RxJava,才让开发者了解Retrofit的强大, 相信不久后各种框架都会完美互相支持。

项目地址:https://github.com/square/retrofit

为何本人比较推崇Retrofit?通过Ta我们可以学习Okhttp,甚至结合RxJava,并且retrofit本身使用注解,构建者模式,也能很好支持各种数据解析模式对于其他一些框架原理也能涵盖,是一款入门健全框架之一。

移动开发技术的层出不穷,也给开发者带来的欢喜和苦恼,需要不断去掌握新的技术,降低开发成本,但又带来了学习技术的成本,对于已成型的项目却带来了不必要的改造产出,对于新技术,不必排斥,也未必去热衷,如果你是开发者个人,那么可以花精力多去关注,没时间的人永远只会找借口,总归有好处。如果是企业 你能承担人力成本的前提下,那么可以去积极踩坑和尝试,帮助其他开发者学习,没有资金人力成本的,那么还是建议用成熟技术和框架,在后续被其他大企业踩稳后再不断引进为好。

对于新技术,拥抱变化,才能拥有未来!

Tamic :http://blog.csdn.net/sk719887916/article/details/53525067

参考资料:http://zhihu.com/question/32037895/answer/54486823

2016移动端Android新技术综合预览--好文不多,这一篇就足够的更多相关文章

  1. Android远程桌面助手(B1185)for Android P开发者预览版

    Android P的开发者预览版已出,其中App compatibility changes部分特别强调“The platform restricts the use of some non-SDK ...

  2. Android 10开发者预览版功能介绍

    Android P的开发者预览版最亮眼的功能莫过于支持“刘海屏”等屏幕显示.同样在适配可折叠设备方面,Android Q的第一个开发者预览版也很“接地气”,谷歌早在去年11月就发布了对可折叠设备的支持 ...

  3. Java实现web在线预览office文档与pdf文档实例

    https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...

  4. IOS 预览word文档的集中方式

    在iPhone中可以很方便的预览文档文件,如:pdf.word等等,这篇文章将以PDF为例.介绍三种预览PDF的方式,又分别从本地pdf文档和网络上的pdf文档进行对比. 预览本地PDF文档: 1.使 ...

  5. Asp.Net在线预览Word文档的解决方案与思路

    前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈. 这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档. 首先想到的是用第三方 ...

  6. 移动端上传照片 预览+Draw on Canvas's Demo(解决 iOS 等设备照片旋转 90 度的 bug)

    背景: 本人的一个移动端H5项目,需求如下: 需求一:手机相册选取或拍摄照片后在页面上预览 需求二:然后绘制在canvas画布上 这里,我们先看一个demo(http://jsfiddle.net/q ...

  7. 关于降低android手机摄像头预览分辨率

    假设现在有这样一个需求需要一直开着手机摄像头 但是不做任何拍照动作 但是每个手机的相机分辨率都不同 而默认预览的时候参数是最大分辨率 这样有时候就回导致电量损耗的加快 所以我们可以采取降低相机分辨率的 ...

  8. Android手势识别 Camera 预览界面上显示文字 布局注意事项(merge布局)

    通常在Surfaceview作为预览视频帧的载体,有时需在上面显示提示文字.曾经我弄的都好好的.今天忽然发现叠加的TextView不管咋弄都出不来文字了,跟Surfaceview一起放在FrameLa ...

  9. android camera 摄像头预览画面变形

    问题:最近在处理一下camera的问题,发现在竖屏时预览图像会变形,而横屏时正常.但有的手机则是横竖屏都会变形. 结果:解决了预览变形的问题,同时支持前后摄像头,预览无变形,拍照生成的jpg照片方向正 ...

随机推荐

  1. POJ-1062 昂贵的聘礼---Dijkstra+枚举上界

    题目链接: https://vjudge.net/problem/POJ-1062 题目大意: 中文题 思路: 1是终点,可以额外添加一个源点0,0到任意一节点的距离就是这个点的money,最终求的是 ...

  2. MySQL 如何使用 PV 和 PVC?- 每天5分钟玩转 Docker 容器技术(154)

    本节演示如何为 MySQL 数据库提供持久化存储,步骤为: 创建 PV 和 PVC. 部署 MySQL. 向 MySQL 添加数据. 模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到 ...

  3. JS-DOM ~ 03. 子节点的操作、style.样式和属性、dom元素的创建方法及操作、14个例题、主要是利用js直接控制html属性

    带有Element和不带的区别 a)  带Element的获取的是元素节点 b)  不带可能获取文本节点和属性节点 获取所以子节点 a)   . childNodes b)   . children ...

  4. jacascript 立即执行函数(IIFE)与闭包

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 一直没搞清楚立即执行函数和闭包之间的关系,总结一下: 闭包有很多种理解:访问不到内部作用域,函数就是这样, ...

  5. 在python后台如何将客户端提交的form表单数据提取出来?

    1.获取客户端提交的表达数据,数据类型为ImmutableMultiDictformData = request.form2.将提取的数据转化成字典formDict = formData.to_dic ...

  6. 【Web安全】DoS及其家族

    不久前我分享过的Web安全概述获得了大家的广泛关注,说明大家对Web安全这一块还是很关心的,因此木可大大将陆续推出目前常见的Web攻击手段和对应的防范策略.本期向大家介绍的是DoS和它的家族. DoS ...

  7. javax.el.ELException: Error reading [name] on type [com.news.entity.Topic_$$_javassist_1]异常

    异常如下: 异常分析:从message中可以看出,错误是读取异常,属性是name,路径是com.news.entity.Topic,此错误是使用Hibernate时,由于Hibernate还没有去数据 ...

  8. leetcode 283. Move Zeroes -easy

    题目链接:https://leetcode.com/problems/move-zeroes/ 题目内容: Given an array nums, write a function to move ...

  9. mysql之连接查询小作业

    #数据准备drop table if exists class;create table class(    class_no int(2) unsigned zerofill primary key ...

  10. bzoj 2339: [HNOI2011]卡农

    Description Solution 比较难想.... 我们先考虑去掉无序的这个条件,改为有序,最后除 \(m!\) 即可 设 \(f[i]\) 表示前\(i\)个合法集合的方案数 明确一点: 如 ...