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