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

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

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

過(guò)時(shí)的方法

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

首先,寫一個(gè)方法,加上 @Deprecated 注解,表示這個(gè)方法已過(guò)時(shí),
然后在上面加上文檔注釋, @deprecated 請(qǐng)用 {@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 請(qǐng)用 {@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í)候,一看過(guò)時(shí)了,說(shuō)明這個(gè)方法兼容的版本比你編譯的版本要低,那么切換到新的方法就沒(méi)問(wèn)題了。有著輕度強(qiáng)迫癥我,是不會(huì)看到這種過(guò)時(shí)方法存在的。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容