关于support library那些事

android开发中不可避开的一个事情,就是support library的引用。

Google官方文档,建议一直使用它。

网上的资料对这个东西的解释,也是为了兼容旧版本设备。

 

本来我以为这只是个入门问题,大家不讨论都是觉得没必要讨论。

经过一番调查发现,实际上没人说得清楚为什么要使用它,为什么不使用它,这东西在开发sdk里到底占居一个什么位置,它里面的实现跟原生提供的机能有什么区别。

 

任何OS的升级,除了提供新的机能外,就是原声api的增加了,既然是新追加的api,如果使用了这个api,那么在旧版本的os上自然是无法运行,如果又想在旧版本os上能够支持新的特性怎么办?当然是在旧版本原声api基础上再模拟一套新特性了。support library干的就是这种事情。

 

既然support library是基于一个旧版本的os扩展开来的,那么到底是哪个版本,必须有个基准。

比如现在最常用的一个版本SUPPORT V7(注意这里的V7并不是support library的版本,V7代表的意思是基于os的哪个版本做成的,support library经常升级添加新特性,只要基于的os版本不变,这个V7号也是不会变)是基于os 2.1作成的,那么在版本在2.1以上的所有机子都可以用。

 

那么问题来了,如果我只想做一个支持os 4.0以上的app,而且os 4.0提供的api足够我用了,我为什么还要用support library?因为比如SUPPORT V7,它的内部实现已经确定了,我使用它运行在os 2.1和os4.0上没啥区别。

 

按照有些网友的解释,好像support library里也会提供一些原生api不提供的东西,太搞笑了,如果作为原生api的扩展,为啥非要放到这个包里?

 

对于高版本的os,同样的api,有两份,一份是原生实现,一份是由support library实现的。而且官方也建议不管min version是哪个版本的程序,最好使用support library,那么拜托,你还升级os干嘛,只升级support library不就好了?support library在高版本的os运行时会切换调用原生api么?

 

根据以下stackoverflow上的回复

http://stackoverflow.com/questions/27445923/does-the-android-support-library-default-to-the-native-libraries-on-the-latest-a

一般情况下,不会调用原生api,不管你是在哪个版本的os上运行,只要使用了support library,那么就是使用了它的实现。

 

但是根据这个stackoverflow上的回复

http://stackoverflow.com/questions/11641669/how-android-support-library-work

 

在高版本的os运行时,会切换到原生api的,甚至连内部消息都出来了(看Jose L Ugia的回答),我真是醉了。

 

我最后只想说,贵圈真tmd乱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值