所以我們已經看到預覽SDK和像ActionBar和Fragments這樣整潔的新東西。做很多方法調用將不可避免地使用這些,所以有什麼策略來維護1版本的應用程序,這會讓我使用所有時髦的新東西,但也可以在運行2.3或更低版本的設備上工作?我的應用程序目前的目標是1.5 - 2.3。針對蜂窩和向後兼容的策略
回答
現在可以使用相同的片段API作爲static library用於較舊版本的Android;它與Android 1.6相兼容。
您可以使用一些技巧來查看各種新的API是否可用於您的應用。一般來說,你可能想要創建兩個可選的活動集,一個使用新奇的API(ActionBar,Animators等) - 另一個不使用。
以下代碼顯示瞭如何使用反射和異常捕獲來確定Fragment API的可用性以及版本檢查以確認其他Honeycomb API是否可用。
private static boolean shinyNewAPIsSupported = android.os.Build.VERSION.SDK_INT > 10;
private static boolean fragmentsSupported = false;
private static void checkFragmentsSupported() throws NoClassDefFoundError {
fragmentsSupported = android.app.Fragment.class != null;
}
static {
try {
checkFragmentsSupported();
} catch (NoClassDefFoundError e) {
fragmentsSupported = false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startActivityIntent = null;
if (!shinyNewAPIsSupported)
startActivityIntent = new Intent(this, MainNonActionBarActivity.class);
else
startActivityIntent = new Intent(this, MainActionActivity.class);
startActivity(startActivityIntent);
finish();
}
一般而言,您可以使用相同的佈局定義。在可用碎片的情況下,您可以在不同的碎片中對每個佈局進行膨脹,在這種情況下,您可能不希望使用<include>
標籤將其中幾個嵌入到更復雜的活動佈局中。通過對如何編寫代碼來支持蜂窩向後兼容性
更詳細的工作可以在這裏找到:http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
您可能會發現Reto Meier的article on backwards-compatibility有用,特別是「處理失蹤班」一節。
我還沒有親自看過Honeycomb SDK,但我和你一樣,希望能夠在不損害與舊設備的兼容性的情況下使用新功能非常簡單和無憂。
方便地,Google的Dianne Hackborne已發佈a blog entry涵蓋此確切主題。谷歌表示他們將提供靜態庫,因此老版本的Android也將能夠使用片段。
那麼谷歌剛剛宣佈蜂窩將只有平板電腦:http://www.pcmag.com/article2/0,2817,2379271,00.asp
所以如果你的設備是爲移動只有這甚至可能不是一個問題。
官方Android樣本,這將幫助你實現ActionBar from 1.6 to 4.x
- 1. 片段與兼容包和>蜂窩
- 2. 使蜂窩ActionBar與ICS兼容
- 3. 針對蜂窩前構建renderscript
- 4. 蜂窩和startManagingCursor
- 5. Android蜂窩和imeOptions
- 6. ListAdapter在蜂窩兼容性api上的ListFragment
- 7. 對象/ XML向後兼容
- 8. PHP的隱窩()河豚鹽長度向後兼容
- 9. 安卓動作欄兼容性替代xml預蜂窩
- 10. Android:2.1應用程序佈局兼容性蜂窩3.2
- 11. 什麼是Kotlin的兼容性策略?
- 12. 蜂窩和遊標(沮喪)
- 13. SlidingMenu和ViewPager與API13(蜂窩)
- 14. state_activated預蜂窩
- 15. Android:WebView ActionBar(蜂窩)?
- 16. 在蜂窩
- 17. 蜂窩邊界
- 18. 對Caches目錄的向後兼容性
- 19. Xcode向後兼容
- 20. 向後兼容Android
- 21. 向後兼容BackupAgent
- 22. ios5向後兼容
- 23. Office.Interop向後兼容?
- 24. iOS6向後兼容
- 25. MSVCRT向後兼容?
- 26. 向後兼容setOnDateSetListener
- 27. Android WebView 302重定向 - 蜂窩
- 28. 針對數據和業務邏輯構建向後兼容的SaaS
- 29. C++ 11策略的採用和兼容性?
- 30. ISerializable的和向後兼容性
還檢查了這個職位,這給出了更多使用多個平臺版本的示例:http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html – adamp 2011-01-28 20:06:17
我讀過他們兩個,但它看起來像蜂窩將更多地參與,尤其是像碎片和ActionBar的東西。你認爲使用這些技術就足夠了嗎? – 2011-02-01 21:23:12