Android应用内结算示例中存在严重问题?

时间:2011-05-22 19:19:25

标签: android in-app-purchase android-service

我最近在Android电子市场上发布了一个应用程序,并且有一些我无法弄清楚的错误报告。我的应用程序具有可以“激活”的功能,只需1美元的费用,而且它基于Google的Dungeons示例应用程序。

示例应用程序存在两个主要问题,我认为这会给很多开发人员带来问题。

1)它在BillingService中使用了一种弃用的方法。 BillingService是特定于应用程序的,并处理与Android Market App的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,int)

“如果服务在其进程消失后重新启动,则该值可能为null,并且之前已返回除START_STICKY_COMPATIBILITY之外的任何内容。”

由于我是新手Android开发者,我不想哭狼。任何人都可以告诉我Dungeons示例应用程序是否已损坏,或者我是否在此处误解了某些内容?

1 个答案:

答案 0 :(得分:2)

这些应用程序并非设计为无错误且适应各种情况,仅用于演示一个方面。我注意到其他例子中有很多怪癖。

你不能只为intent为null时添加一个测试吗?

正如您所暗示的那样,您的应用应该使用onStartCommand()而不是onStart(),这与Dungeon示例不同。