Серьезная проблема в примере биллинга Android в приложении?

1

Недавно я опубликовал приложение на Android Market и получил некоторые отчеты об ошибках, которые я не мог понять. Мое приложение имеет функциональность, которая может быть "активирована" за плату в размере 1 доллара США, и она свободно основана на примере приложения Dungeons от Google.

В примере приложения есть две основные проблемы, которые, как я думаю, вызовут проблемы для многих разработчиков.

1) В нем используется устаревший метод BillingService. BillingService является специфичным для приложения и обрабатывает связь RPC с Android Market App. Это должно быть вокруг, даже если ваша Acitivty нет. Он реализует этот метод.

@Override public void onStart (намерение намерения, int startId) {} ​​

Вместо нового

public int onStartCommand (Intent intent, int flags, int startId) {} ​​

2). Более серьезно, угловой случай, когда Intent us null, on onStart/onstartCommand вызывает вызовы NPE, поскольку код

Строковое действие = aim.getAction();

Выполняется в примере приложения без нулевой проверки.

Согласно документу http://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent, int)

"это может быть нулевым, если служба перезапускается после того, как ее процесс ушел, и он ранее возвращал что-либо, кроме START_STICKY_COMPATIBILITY."

Так как я начинающий Android dev, я не хочу плакать волком. Может ли кто-нибудь сказать мне, если приложение Dungeons sample сломано, или если я что-то неправильно понял?

  • 0
    Если вам нужна другая точка зрения, вы также можете проверить это в учебнике по приложениям anddev.org/advanced-tutorials-f21/… :-)
Теги:
android-service
in-app-purchase

1 ответ

2
Лучший ответ

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

Не можете ли вы просто добавить тест, когда цель равна null?

Как вы намекали, ваше приложение должно использовать onStartCommand() вместо onStart(), в отличие от примера Dungeon.

  • 0
    Благодарю. Думаю, я просто уверен, что Google выбрал такой «нереалистичный» пример (зелья и мечи), и что приложение «Пример», которое они предоставляют, содержит код до версии 2.0.
  • 0
    Лучше использовать код до 2.0, чтобы включить обратно совместимый код. до сих пор около 10% пользователей используют <2.0
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню