【发布时间】:2011-08-30 17:11:25
【问题描述】:
我最近在 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,因为代码
字符串动作 = intent.getAction();
在示例应用程序中执行,没有任何空值检查。
根据文档 http://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent, int)
“如果服务在其进程消失后重新启动,并且它之前返回了除 START_STICKY_COMPATIBILITY 之外的任何内容,则这可能为 null。”
由于我是一名新手 Android 开发人员,我不想大喊大叫。谁能告诉我地下城示例应用程序是否损坏,或者我在这里误解了什么?
【问题讨论】:
-
如果您想要其他观点,您也可以查看此应用内教程anddev.org/advanced-tutorials-f21/… :-)
标签: android in-app-purchase android-service