模仿安卓源碼,手寫過時(shí)的方法兼容低版本

經(jīng)常寫代碼時(shí)候,會看到某個(gè)方法上面畫一條橫線,注釋寫的是此方法已過時(shí),推薦使用XXX某某方法替代。我覺得這個(gè)提示很有用。在實(shí)際開發(fā)中,有時(shí)候老項(xiàng)目版本迭代之后,用了最新的API,為了兼容老版本,要把老方法保留,還要新增很多新方法,無疑增加了工作量。假如這時(shí)候引入安卓源碼的這種設(shè)計(jì)思想,問題就會變得很簡單了。下面簡單的來講一下:

我們經(jīng)常會使用getColor(R.color.XXX)獲取顏色的資源文件,但是在安卓6.0開始,這個(gè)方法被標(biāo)注為過時(shí),推薦使用兩個(gè)參數(shù)的方法替代,如下圖所示:

過時(shí)的方法

那么我怎么才能象系統(tǒng)源碼那樣去做呢?別著急,干貨來了。。

首先,寫一個(gè)方法,加上 @Deprecated 注解,表示這個(gè)方法已過時(shí),
然后在上面加上文檔注釋, @deprecated 請用 {@link 類名#方法名(參數(shù)...)} 替代

舉例如下,下面是我寫的一個(gè)工具類:

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;
    }
}

調(diào)用方法如下:

調(diào)用方法

怎么樣?是不是很裝(6)逼?別人用這個(gè)方法的時(shí)候,一看過時(shí)了,說明這個(gè)方法兼容的版本比你編譯的版本要低,那么切換到新的方法就沒問題了。有著輕度強(qiáng)迫癥我,是不會看到這種過時(shí)方法存在的。

小伙伴們,快來試試看吧。從此讓你的代碼逼格起來!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,476評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,982評論 19 139
  • 來源與:阿里云棲 禁止用于商業(yè)用途 ps:如果需要電子書 評論你們郵箱 我會發(fā)給你們 下面感覺還是有點(diǎn)亂 目錄 一...
    小向資源網(wǎng)閱讀 7,674評論 0 12
  • 一、書籍選擇 1.工作前5年,決定你一生的財(cái)富 2.偉大的博弈 3.彼得林奇教你理財(cái) 4.聰明的投資者 二、書籍之...
    AiiLemon閱讀 274評論 0 0
  • 孔子他老人家說過:“益者三友,友直,友諒,友多聞”,就是說結(jié)交正直的朋友,誠信的朋友,見多識廣的朋友是有益的。 記...
    錢萊愛讀書閱讀 673評論 0 2