全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中封装SDK时常用的注解总结

前言

在工作中我们经常需要将功能模块封装成库供合作厂商调用, 如何写好一个健壮的Android Library有很多讲究,使用注解可以对SDK暴露给开发者的接口做出一些限制,从而尽可能地避免开发者错误地使用API。 下面我们介绍几种封装SDK时常用到的注解,需要的朋友们可以参考学习。

一、IntDef与StringDef

我们有时候会使用int常量或者String常量来代替枚举, 特别在你编写SDK的时候,你可以通过IntDef或者StringDef来限制接口可接受的参数。

比如,有一个 disableChannel的接口,用来关闭指定的channel 。 我们可以先定义自己的注解@RequirePayChannel

public static final int CHANNEL_UNIONPAY = 0x11000;
public static final int CHANNEL_ALIPAY = 0x12000;
public static final int CHANNEL_WECHAT = 0x13000;
@Retention(RetentionPolicy.SOURCE)
@IntDef({CHANNEL_UNIONPAY,CHANNEL_ALIPAY,CHANNEL_WECHAT})
public @interface RequirePayChannel {}

这样,你便可以通过@RequirePayChannel来指定disableChannel()的可接受参数

public void enableChannel(@RequirePayChannel int channel) {
 // do something
}

这样,一些IDE还会自动提供给你建议参数。如果填入指点范围之外的参数,将会出现错误提示并无法编译通过。


值得一说的是, 在这里,我们使用到了@Retention(RetentionPolicy.SOURCE) 。 它指定了编译器在处理Animation时候的处理方法。 默认编译器会将常量替换成对应的数值,如果没指定该注解,你编译完成后将得到这样的class文件:


这样会导致IDE不能提示到有意义的信息。并且一定要指定为特定的int数值,否则也无法编译通过。


所以,应该指定Retention让编译器不对该注解做额外的优化处理。

二、DrawableRes, StringRes 与 DimenRes

当我们在编写指定资源文件的接口时,可以通过资源注解来指定该方法接受的资源类型。 指定错误的资源将不能编译通过。 下面代码中,我们使用@DrawableRes来表明setLogo方法只支持Drawable资源的ID。

public void setLogo(@DrawableRes int resurceId) {
 // do something
}

当我们提供错误的资源,IDE将会报错。


@StringRes @DimenRes 的使用方法也类似。

三、NonNull 与 Nullable

将一个空值传入一个方法中可能引发潜在的Crash。 我们应该极力避免这种情况, @NonNull 可以指定参数是否接受空值,当我们传入一个空值的时候,IDE会给出响应的警告。 我们可以这样使用它:

public void setContext(@NonNull Context context) {
 // do something
}

当我们对其传入一个空值的时候,将会显示警告(但代码仍然能通过编译)

@Nullable 用于修饰参数或者方法的返回值可能为空,提醒开发者主要空值检查。

@Nullable
public Context getContext() {return null;}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# android  # 封装sdk  # 注解  # android封装sdk包  # 配置Android SDK  # 关于Android Studio封装SDK的那些事儿  # Win8下Android SDK安装与环境变量配置教程  # 利用百度地图Android sdk高仿微信发送位置功能及遇到的问题  # centos7中安装Android SDK的方法步骤  # Android Studio设置或修改Android SDK路径方法  # 当我们  # 将会  # 我们可以  # 可以通过  # 可接受  # 自己的  # 的是  # 在这里  # 给你  # 你可以  # 有很多  # 还会  # 朋友们  # 对其  # 这种情况  # 几种  # 这篇文章  # 一说  # 后将  # 报错 


相关文章: 如何快速查询域名建站关键信息?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  常州自助建站工具推荐:低成本搭建与模板选择技巧  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何快速登录WAP自助建站平台?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何在万网开始建站?分步指南解析  建站之星安装路径如何正确选择及配置?  上海网站制作开发公司,上海买房比较好的网站有哪些?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  大连 网站制作,大连天途有线官网?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  如何通过万网虚拟主机快速搭建网站?  大型企业网站制作流程,做网站需要注册公司吗?  如何在云主机上快速搭建网站?  定制建站流程步骤详解:一站式方案设计与开发指南  建站主机选择指南:服务器配置与SEO优化实战技巧  制作网站的公司有哪些,做一个公司网站要多少钱?  建站与域名管理如何高效结合?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何快速搭建高效WAP手机网站?  中山网站制作网页,中山新生登记系统登记流程?  建站之星备案流程有哪些注意事项?  如何在万网自助建站平台快速创建网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  如何安全更换建站之星模板并保留数据?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  高性价比服务器租赁——企业级配置与24小时运维服务  如何快速搭建高效简练网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  网站设计制作企业有哪些,抖音官网主页怎么设置?  电商平台网站制作流程,电商网站如何制作?  海南网站制作公司有哪些,海口网是哪家的?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何设置并定期更换建站之星安全管理员密码?  制作旅游网站html,怎样注册旅游网站?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  Python lxml的etree和ElementTree有什么区别  建站之星如何快速生成多端适配网站?  如何获取开源自助建站系统免费下载链接?  成都网站制作报价公司,成都工业用气开户费用?  内网网站制作软件,内网的网站如何发布到外网?  建站168自助建站系统:快速模板定制与SEO优化指南  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  如何用IIS7快速搭建并优化网站站点?  c++怎么用jemalloc c++替换默认内存分配器【性能】  广州美橙建站如何快速搭建多端合一网站?  网站网页制作专业公司,怎样制作自己的网页?  清除minerd进程的简单方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。