經(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í)方法存在的。
小伙伴們,快來試試看吧。從此讓你的代碼逼格起來!