Обработка необязательных API в J2ME - PullRequest
2 голосов
/ 28 августа 2010

Каков правильный способ работы с дополнительными API в Java Mobile?

  • Нужно ли создавать разные версии своего приложения?
  • ИлиДостаточно ли проверить доступность API во время выполнения, используя System.getProperty()?

Допустим, я бы хотел, чтобы мое приложение поддерживало JSR-256 (Sensor API).Может ли импорт классов из javax.microedition.sensor и регистрация переменных этих типов сломать мое приложение, если устройство не поддерживает его?

Я уверен, что должен существовать довольно стандартный способ решения этой ситуации.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 августа 2010

Вы можете использовать системные свойства или Class.forName (), чтобы узнать, доступен ли API. Просто убедитесь, что классы, использующие эти API, не загружаются на телефоны, которые их не поддерживают. Вы можете сделать одну версию своего мидлета, которая поддерживает множество разных телефонов.

1 голос
/ 20 января 2011

Существует два способа определить, какие API поддерживаются. Если вы собираетесь выбрать маршрут системных свойств, посмотрите список здесь . Классы также могут использоваться , хотя вы должны быть осторожны. Более сложный вопрос - убедиться, что классы не загружаются:

Статья, на которую ссылается Альбус, имеет следующую цитату:

Загрузчики классов (см. Ниже) могут выбрать загрузить тип рано в ожидании возможное использование. Если эта стратегия выбранный класс загрузчик не должен сообщить о любой проблеме (бросая подкласс java.lang.LinkageError) встречаются во время загрузки до первое активное использование типа.

Итак, если класс на самом деле не используется во время выполнения, вы не должны сталкиваться с какими-либо ошибками. Конечно, Java ME имеет много реализаций, и я не уверен, насколько безопасно доверять им всем для правильной реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...