web-dev-qa-db-ja.com

アプリ内課金(v3)-IllegalArgumentException:サービスが登録されていません:

アプリ内課金のアプリをリリースしました。これまでのところ、クラッシュはgoogle playに報告されていません(これは、ユーザーがクラッシュを報告するのに苦労した場合にのみ発生します)が、急いでクラッシュしたという報告がいくつかあります(自動)。クラッシュレポートは次のとおりです。

class Java.lang.RuntimeException
Msg: Android.app.ActivityThread.performDestroyActivity:3655 (Unable to destroy activity {com.mycompany.mygame/com.mycompany.mygame.Splashscreen}: Java.lang.IllegalArgumentException: Service not registered: com.mycompany.mygame.util.IabHelper$1@46369b38)

これは、アプリの実行の1%未満でのみ発生します。

私が間違っている場合は訂正してください。ただし、クラッシュの行番号が急増レポートに記載されていないようです:-(

このクラッシュレポートが何を意味するのか、ましてや修正方法もわかりません。何か案は?

46
Mick

これはIabHelper.Javaのバグだと思います。

IabHelper disposeメソッドでは、次の行、

            if (mContext != null) mContext.unbindService(mServiceConn);

これに変更する必要があります。

            if (mContext != null && mService != null) mContext.unbindService(mServiceConn);

mServiceは、サービスが登録された後にのみ設定されるため、!= nullをチェックすると、バインドを解除する前に、サービスが実際に登録されていることが保証されます。

117
therealsachin