模仿安卓源码,手写过时的方法兼容低版本

经常写代码时候,会看到某个方法上面画一条横线,注释写的是此方法已过时,推荐使用XXX某某方法替代。我觉得这个提示很有用。在实际开发中,有时候老项目版本迭代之后,用了最新的API,为了兼容老版本,要把老方法保留,还要新增很多新方法,无疑增加了工作量。假如这时候引入安卓源码的这种设计思想,问题就会变得很简单了。下面简单的来讲一下:

我们经常会使用getColor(R.color.XXX)获取颜色的资源文件,但是在安卓6.0开始,这个方法被标注为过时,推荐使用两个参数的方法替代,如下图所示:

过时的方法

那么我怎么才能象系统源码那样去做呢?别着急,干货来了。。

首先,写一个方法,加上 @Deprecated 注解,表示这个方法已过时,
然后在上面加上文档注释, @deprecated 请用 {@link 类名#方法名(参数...)} 替代

举例如下,下面是我写的一个工具类:

public class ResourceUtils {

    public static ResourceUtils resourceUtils;
    public Context mContext;

    public ResourceUtils(Context context) {
        this.mContext = context;
    }

    public static ResourceUtils getInstance(Context context) {
        if (resourceUtils == null) {
            synchronized (ResourceUtils.class) {
                if (resourceUtils == null) {
                    resourceUtils = new ResourceUtils(context);
                }
            }
        }
        return resourceUtils;
    }

    /**
     * @param colorResId
     * @removed
     * @deprecated 请用 {@link ResourceUtils#obtainColorResources(int)} 替代
     */
    @Deprecated
    public ResourceUtils getColorResources(int colorResId) {
        mContext.getResources().getColor(colorResId);
        return this;
    }

    /**
     * @param colorResId
     * @return
     */
    @TargetApi(23)
    public ResourceUtils obtainColorResources(int colorResId) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            ContextCompat.getColor(mContext,colorResId);
        } else {
            mContext.getResources().getColor(colorResId);
        }
        return this;
    }
}

调用方法如下:

调用方法

怎么样?是不是很装(6)逼?别人用这个方法的时候,一看过时了,说明这个方法兼容的版本比你编译的版本要低,那么切换到新的方法就没问题了。有着轻度强迫症我,是不会看到这种过时方法存在的。

小伙伴们,快来试试看吧。从此让你的代码逼格起来!

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,705评论 25赞 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,275评论 19赞 139
  • 来源与:阿里云栖 禁止用于商业用途 ps:如果需要电子书 评论你们邮箱 我会发给你们 下面感觉还是有点乱 目录 一...
    小向资源网阅读 7,895评论 0赞 12
  • 一、书籍选择 1.工作前5年,决定你一生的财富 2.伟大的博弈 3.彼得林奇教你理财 4.聪明的投资者 二、书籍之...
    AiiLemon阅读 330评论 0赞 0
  • 孔子他老人家说过:“益者三友,友直,友谅,友多闻”,就是说结交正直的朋友,诚信的朋友,见多识广的朋友是有益的。 记...
    钱莱爱读书阅读 791评论 0赞 2

友情链接更多精彩内容