Honeycomb& Strategy的策略向后兼容性

时间:2011-01-28 19:29:57

标签: android backwards-compatibility android-3.0-honeycomb

所以我们已经看到了预览sdk以及ActionBar和Fragments等新的东西。制作大量的方法调用将不可避免地使用这些,所以有什么策略可以维护1个版本的应用程序,这将让我使用所有时髦的新东西,但也可以在2.3或更低版本的设备上工作?我的应用目标目标是1.5 - 2.3。

5 个答案:

答案 0 :(得分:27)

相同的片段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>标签将其中的几个嵌入到更复杂的活动布局中。

有关如何编写代码以支持Honeycomb向后兼容性的更详细的工作,请访问:http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html

答案 1 :(得分:3)

方便的是,谷歌的Dianne Hackborne发布了a blog entry来涵盖这个确切话题。谷歌称他们将提供静态库,因此旧版本的Android也可以使用片段。

答案 2 :(得分:2)

你可能会发现Reto Meier的article on backwards-compatibility很有用,特别是“处理缺失的课程”这一部分。

我自己还没有看过Honeycomb SDK,但我和你一样,希望能够轻松,轻松地使用新功能而不会损害与旧设备的兼容性。

答案 3 :(得分:1)

谷歌刚刚宣布蜂窝网仅为平板电脑:http://www.pcmag.com/article2/0,2817,2379271,00.asp

因此,如果您的设备只适用于移动设备,则这可能不是问题。

答案 4 :(得分:1)

官方Android示例,可帮助您实现ActionBar from 1.6 to 4.x