簡體   English   中英

Android:使用目標SDK?

[英]Android: Using Target SDK?

我了解,最低SDK定義了應用程序運行所需的最低操作系統級別,並且假定已實現向后兼容性,目標SDK會告知設備使用的功能的最高API版本。

但這是我不明白的。 您如何實現全新API功能的向后兼容性?

例如:

在開發當前應用程序時,我一直在使用舊的Notification系統,而不是Notification.Builder。 如果我選擇使用Notification.Builder,那么操作系統或編譯器是否會自動將其替換為兼容的代碼,以適應早於引入該平台的平台? 還是我必須檢查操作系統版本並編寫單獨的代碼?

您必須自己考慮新方法,例如通過使用,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    // Use methods introduced in API 11. (i.e. Notification.Builder)
} else {
    // Use old methods to ensure backwards compatibility.
}

進行這些檢查的一個好地方是在實用工具類中(即CompatUtils.java )。 因此,例如,您可以創建一個帶有Context參數並返回新Notification的靜態方法:

public static buildNotification(Context ctx) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        // Create and return the Notification using Notification.Builder
    } else {
        // Create and return the Notification using pre-HoneyComb methods
    }
}

然后只需在Activity調用CompatUtils.buildNotification(this)即可創建新的Notification 提取出這些細節可以使您的Activity保持簡潔,並且在以后需要時可以輕松更改。

當然,最好只使用舊方法來創建Notification ,因為您還是需要實現它們,而Notification.Builder只是為了方便起見。 但是,絕對要牢記這一點,以防以后遇到類似問題!


編輯:

Android支持包中還提供了Notification.Builder ,因此在這種情況下,您只應使用它...但是,對於兼容性包中提供的方法,應使用上述設計模式。

google有自己的兼容性軟件包(在支持庫中),還有其他第三方解決方案(例如actionBarSherlock),當您嘗試使用無法使用的新功能時,Lint工具可以告訴您您設置的API范圍。

檢查API的一種方法是使用android.os.Build.VERSION.SDK_INT。 另一種方法是使用反射,谷歌有時會使用反射(但我不確定為什么)。

無論如何,谷歌建議在其視頻中始終將targetSdk設置為存在的最高視頻,以改善輸出APK的優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM