Я недавно опубликовал приложение на Android Market и получил несколько отчетов об ошибках, которые не могу понять. В моем приложении есть функции, которые можно «активировать» за плату в размере 1 доллара, и оно основано на примере приложения Dungeons от Google.
Есть две основные проблемы с примером приложения, которые, я думаю, вызовут проблемы у многих разработчиков.
1) Он использует устаревший метод в BillingService. BillingService зависит от приложения и обрабатывает связь RPC с приложением Android Market. Он должен быть рядом, даже если вашей Активности нет. Он реализует этот метод.
@Override public void onStart (намерение, int startId) {}
Вместо более новой
public int onStartCommand (намерение намерения, флаги int, int startId) {}
2) А если серьезно, крайний случай, когда Intent us null, при вызовах onStart/onstartCommand вызывает NPE, поскольку код
Строковое действие = намерение.getAction();
Выполняется в примере приложения без какой-либо проверки нуля.
Согласно документу http://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent, интервал)
«это может быть нуль, если служба перезапускается после того, как ее процесс ушел, и ранее она возвращала что-либо, кроме START_STICKY_COMPATIBILITY».
Поскольку я начинающий Android-разработчик, я не хочу плакать волком. Может ли кто-нибудь сказать мне, не работает ли пример приложения Dungeons или я что-то неправильно понял?