Android L開(kāi)發(fā)者預(yù)覽版的API變化
無(wú)論如何,Android L 開(kāi)發(fā)者預(yù)覽版差異報(bào)告已經(jīng)隨著javaDoc一起發(fā)布了,在(a poorly-structured ZIP archive)可以看到。我經(jīng)常回顧這份資料,想看看這和Google I/O上呈現(xiàn)出的有多大差別。Android L 其實(shí)有不少很有意義的改變。
注意:這份分析是基于Android L 的開(kāi)發(fā)預(yù)覽版,也許在“L”發(fā)布之前很有可能這里說(shuō)的一些東西會(huì)回到上一版本中,成為Android 5.0的一部分(而且叫什么名稱也還不知道)。還有,雖然本文只展示一些我們關(guān)心的領(lǐng)域,但是強(qiáng)烈建議讀者還是好好去看看實(shí)際發(fā)布的版本。
注意2:在Android上,“deprecated”(不推薦)指的是我們認(rèn)為還有更好的方案可以使用。這里不能保證以后一定會(huì)一直支持這個(gè)部分,但是至少現(xiàn)在還是可以使用的。
關(guān)于注意事項(xiàng),下面黑體字說(shuō)明了版本變更情況:
-
Action Bar 導(dǎo)航:對(duì)于所有格式來(lái)說(shuō),都不建議使用了。這里就包括了Action Bar Tabs和下拉導(dǎo)航。我也在想如果限制了Action Bar tabs上面的各種操作的話,會(huì)怎么樣呢?
-
還有部分理由是Action Bar在開(kāi)發(fā)中已經(jīng)被另一種更容易操作的組件替代。Activity中有一個(gè)setActionBar()方法,需要一個(gè)Toolbar參數(shù)。 Toolbar就像一個(gè)簡(jiǎn)化版的ActionBar一樣,可以放在視圖結(jié)構(gòu)的任何一個(gè)地方,相比只能鎖定在頂部的ActionBar來(lái)說(shuō)好多了。
-
Activities也可以“持久化”,還可以跨過(guò)重啟。我想這點(diǎn)大概是為了對(duì)近期推出的一些功能的擴(kuò)展吧,而副作用就是需要對(duì) onSaveInstanceState()方法有新的認(rèn)識(shí),在Activity上我們需要操作Bundle和一個(gè)叫PersistableBundle 的東西,也許就是這個(gè)東西可以挽救系統(tǒng)重啟帶來(lái)的災(zāi)難。
-
在ActivityManager中的getRecentTasks()和getRunningTasks()現(xiàn)在也不建議使用了,在Android L或者更高版本中會(huì)返回一個(gè)結(jié)果的子集。
-
BatterryManager現(xiàn)在可以直接獲取電量信息了,而不用為ACTION_BATTERY_CHANGED注冊(cè)一個(gè)null類(lèi)型的receiver。
-
bindService()方法現(xiàn)在需要傳入一個(gè)明確的Intent對(duì)象,如果你的目標(biāo)sdk版本設(shè)置為L(zhǎng)版本或者更高的話,建議使用隱式的Intent,以保證代碼可讀性,而如果你在服務(wù)中使用的話,要注意一下。據(jù)Alex Curran說(shuō),這會(huì)對(duì)IAP(in-ap pruchasing)的代碼集成有影響。
-
現(xiàn)在我們可以使用getExternalMediaDirs()方法,和getExternalFileDirs()方法類(lèi)似,但是此方法可以被MediaStore掃描到。
-
在DevicePolicyManager中已經(jīng)加入了很多新的功能,可以更多地使用一些高級(jí)的API。
-
FragmentBreadCrumbs目前也不建議使用了。使用這個(gè)類(lèi)的朋友們,為你們默哀。
-
還有這里新加了一個(gè)啟動(dòng)器,幫助更容易找到相關(guān)的應(yīng)用,不過(guò)這也和系統(tǒng)的配置有關(guān)(如果沒(méi)設(shè)置成默認(rèn)啟動(dòng)器的話,那是不行的)。
-
MediaStore新增了MediaStore.Audio.Radio,它還沒(méi)有正式的文檔資料,所以對(duì)于流媒體廣播電臺(tái),傳統(tǒng)的廣播電臺(tái)或者其它的來(lái)說(shuō),也會(huì)很不明確。
-
在所有模式中,TOP_LEVEL_*這樣的模式已經(jīng)不建議使用了。也許這也反映出了頂級(jí)域名的數(shù)量也在不斷增加。
-
Android上現(xiàn)在有很多關(guān)于探測(cè)“省電模式”的一些工具,在PowerManager上使用isPowerSaveMode()方法再加上一個(gè) ACTION_POWER_SAVE_MODE_CHANGED廣播就可以了。至于是否是在OEM直接納入還是在系統(tǒng)框架中集成,那我就不好說(shuō)了。
-
最開(kāi)始要做的事,像“undeprecated”這樣的字眼,十分明確地指出了在設(shè)置時(shí)候出現(xiàn)INSTALL_NON_MARKET_APPS,由于安全問(wèn)題,它已經(jīng)從設(shè)置選項(xiàng)中移回到了這里,變成全局的。
-
web設(shè)置現(xiàn)在可以控制內(nèi)容混合模式,可以控制webview是否從安全的來(lái)源中加載不安全的內(nèi)容。
最后,其實(shí)Android L 中還有很多變化,尤其是一些大的變更。但是我比較重視的就只有這些。如果讀者有興趣,請(qǐng)自行閱讀本文沒(méi)有提到的一些內(nèi)容。
原文鏈接: commonsware 翻譯: 伯樂(lè)在線 - chris