J2ME имеют ли мобильные телефоны функцию автоотключения для несовместимых пакетов? - PullRequest
2 голосов
/ 11 августа 2011

Я хотел бы знать, например, если я разработаю приложение с обоими пакетами WMA (1.1 и 2.0), а затем разверну его на более старой модели телефона с поддержкой только WMA 1.1, отключит ли телефон пакет 2.0?

Код не отличается от того, что он собирается делать между пакетами, но пакет 2.0 предоставляет дополнительную функциональность этому коду, который в итоге оказывается оптимальным для более новых телефонов.

Ответы [ 3 ]

2 голосов
/ 13 августа 2011

Я хотел бы рассмотреть возможность использования Class.forName для загрузки соответствующего кода в зависимости от того, поддерживает ли устройство WMA 2 или нет

class SpecificFeatureFactory {
    SpecificFeature get(boolean isWma2) {
        return (SpecificFeature)Class.forName(isWma2 ? "Rich" : "Poor");
    }
}

class Rich implements SpecificFeature {
    @Override
    long doSomething(String className, Date dateAlarm) throws Exception {
        return PushRegistry.registerAlarm(className, dateAlarm);
    }
}

class Poor implements SpecificFeature {
    @Override
    long doSomething(String className, Date dateAlarm) throws Exception {
        return -1;
    }
}

interface SpecificFeature {
    long doSomething(String className, Date dateAlarm) throws Exception;
}

Согласно моим воспоминаниям, спецификация WMA описывает, как приложение может определить, является ли оно 1.1 или 2.0.

1 голос
/ 11 августа 2011

Если размер не является проблемой, вам не обязательно использовать предварительную обработку.Если вы не используете классы, которые присутствуют только в WMA 2.0, вы просто отключите NoSuchMethodErrors.Подумайте об этом.

public void doSomeThing()
{
  try{
    callWMA2_0Method();
  }
  catch( NoSuchMethodError e )
  {
    // We're WMA 1.1 then 
    callWMA1_1Method();
  }
} 

Разумеется, вы можете компилировать только с WMA 2.0.Но это не должно быть проблемой

1 голос
/ 11 августа 2011

Это будет ошибка на старом телефоне, который не поддерживает новые функции.

Используйте Препроцессор для компиляции разных версий для старых и новых телефонов из одного пакета исходного кода.

...