Подтвердить что ты не робот

Стратегии для сотовой и обратной совместимости

Итак, мы видели предварительный просмотр sdk и аккуратные новые вещи, такие как ActionBar и Fragments. Выполнение множества вызовов методов будет неизбежно, чтобы использовать их, поэтому какие стратегии существуют для поддержки 1 версии приложения, что позволит мне использовать все сногсшибательные новые вещи, а также работать с устройствами под управлением 2.3 или ниже? Мое приложение на данный момент составляет 1.5 - 2.3.

4b9b3361

Ответ 1

Те же API-интерфейсы фрагментов теперь доступны как статическая библиотека для использования со старыми версиями Android; он совместим с Android 1.6.

Есть несколько трюков, которые вы можете использовать, чтобы узнать, доступны ли новые API для вашего приложения. Вообще говоря, вы, вероятно, захотите создать два альтернативных набора Деяний, один из которых использует фантастические новые API (ActionBar, Animators и т.д.) - и другой набор, который этого не делает.

В следующем коде показано, как вы можете использовать поиск отражений и исключений для определения доступности API-интерфейсов Fragment и проверки версии, чтобы подтвердить, доступны ли другие API-интерфейсы Honeycomb.

  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

Ответ 2

Удобно, что Google Dianne Hackborne разместила запись в блоге, охватывающую эту точную тему. Google заявляет, что они будут предоставлять статические библиотеки, поэтому более старые версии Android также смогут использовать фрагменты.

Ответ 3

Вы можете найти Reto Meier статью о обратной совместимости, в частности раздел "Работа с отсутствующими классами".

Я еще не посмотрел на сам Honeycomb SDK, но я, как и вы, надеюсь, что это будет довольно легко и без проблем использовать новые функции, не ставя под угрозу совместимость со старыми устройствами.

Ответ 4

Хорошо, что только что объявленные google будут только для планшета: http://www.pcmag.com/article2/0,2817,2379271,00.asp

Итак, если ваше устройство предназначено только для мобильных устройств, это может даже не быть проблемой.

Ответ 5

Официальный образец Android, который поможет вам достичь ActionBar от 1.6 до 4.x