我最近在 Android Market 上发布了一个应用程序,但收到了一些我无法弄清楚的错误报告。我的应用程序具有只需 1 美元费用即可“激活”的功能,它大致基于 Google 的 Dungeons 示例应用程序。
示例应用有两个主要问题,我认为这会给很多开发者带来麻烦。
1) 它在 BillingService 中使用了一个已弃用的方法。 BillingService 是特定于应用程序的,它处理与 Android Market 应用程序的 RPC 通信。即使您的 Acitivty 不存在,它也需要存在。它实现了这个方法。
@覆盖 public void onStart(Intent intent, int startId) {}
而不是更新的
public int onStartCommand(Intent intent, int flags, int startId){}
2) 更严重的是,在调用 onStart/onstartCommand 时 Intent us null 的极端情况会导致 NPE,因为代码
String action = intent.getAction();
在示例应用程序中执行,没有任何空检查。
根据文档 http://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent , 整数)
“如果服务在其进程消失后重新启动,并且它之前返回了除 START_STICKY_COMPATIBILITY 之外的任何内容,则这可能为 null。”
由于我是 Android 开发新手,所以我不想狼来了。谁能告诉我 Dungeons 示例应用程序是否已损坏,或者我是否误解了这里的内容?
最佳答案
这些应用程序并非设计为无错误和适应各种情况,只是为了展示一个方面。我注意到其他示例中有很多怪癖。
当 Intent 为空时,您不能只添加一个测试吗?
正如您所暗示的,您的应用应该使用 onStartCommand() 而不是 onStart(),这与 Dungeon 示例不同。
关于android - Android 应用内结算示例中的严重问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6090172/