首页 文章

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

提问于
浏览
1

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

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

1)它在BillingService中使用了一种弃用的方法 . BillingService是特定于应用程序的,并处理与Android Market App的RPC通信 . 即使你的Acitivty不是,它也需要存在 . 它实现了这种方法 .

@Override 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();

是在示例应用程序中执行而不进行任何空检查 .

根据doc [http://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent](http://developer.android.com/reference/android/app/Service.html#onStart(android.content.Intent),int)

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

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

1 回答

  • 2

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

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

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

相关问题