Серьезная проблема в примере биллинга Android в приложении? - PullRequest
1 голос
/ 22 мая 2011

Я недавно опубликовал приложение на Android Market и получил несколько сообщений об ошибках, которые я не смог понять.Мое приложение имеет функциональность, которую можно «активировать» за плату в 1 доллар, и оно свободно основано на примере приложения Dungeons от Google.

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

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

@ Переопределить public void onStart (Intent intent, int startId) {} ​​

Вместо более новых

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

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

String action = intent.getAction ();

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

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

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

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

1 Ответ

2 голосов
/ 22 мая 2011

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

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

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

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