首先我們需要理清當(dāng)前問(wèn)題的解決思路懂衩。
問(wèn)題分為三個(gè)方面:
1編譯問(wèn)題
2lint提示問(wèn)題
3代碼真機(jī)運(yùn)行問(wèn)題(是否崩潰)
針對(duì)第一個(gè)問(wèn)題:
只要參與編譯的android版本擁有當(dāng)前調(diào)用的函數(shù),編譯沒(méi)有任何問(wèn)題
針對(duì)第二個(gè)問(wèn)題:
lint:依據(jù)一定規(guī)則在源碼級(jí)別檢測(cè)代碼潛在安全等等問(wèn)題的一種工具金踪。
如果當(dāng)前調(diào)用方法版本高于minisdkverison版本浊洞,lint就會(huì)提示我們,這處調(diào)用可能會(huì)在低版本的android系統(tǒng)上運(yùn)行失敗胡岔,就是俗稱的崩潰法希。
針對(duì)lint提示的問(wèn)題,解決方案就是針對(duì)lint的機(jī)制提出的:
1改規(guī)則姐军,一般沒(méi)人怎么做?
2關(guān)閉該條規(guī)則檢查
3使用注解告訴lint铁材,不要檢查當(dāng)前的方法,就是SuppressWarnings(“NewApi”)
4使用注解告訴lint奕锌,這種用法我已經(jīng)做了妥善處理著觉,請(qǐng)不要提示。就是TargetApi惊暴,RequireApi饼丘。這些注解只是告訴lint不要提示罷了,如果你沒(méi)做任何防范措施辽话,對(duì)代碼的運(yùn)行不會(huì)產(chǎn)生任何影響肄鸽,該崩的還是會(huì)崩卫病。就好像,別人告訴你這樣做很危險(xiǎn)典徘,你說(shuō)你是故意這樣做的蟀苛,并且說(shuō)你防范了潛在的危險(xiǎn)。事實(shí)上你沒(méi)防范逮诲。
5使用行動(dòng)告訴lint帜平,你做了防范,就是所謂的添加版本判斷梅鹦。有時(shí)候你添加了版本判斷裆甩,但是高版本分支代碼是對(duì)一個(gè)自定義的方法的調(diào)用,而不是直接調(diào)用高版本的方法齐唆。這時(shí)候你還要在自定義的函數(shù)上面添加TargetApi嗤栓,RequireApi提示。這次你是做了防范之后箍邮,告訴lint這個(gè)包含高版本的方法調(diào)用的方法是安全的茉帅。
針對(duì)第三個(gè)問(wèn)題:
一定需要確保高版本的方法調(diào)用只在高版本中發(fā)生。唯一的方法就是添加版本判斷锭弊。