0

この問題を数日間解決しようとしていますが、うまくいきません。これが問題です。

そのため、アプリ内課金ウィンドウを開くサービス ウィンドウがあり、次の 1 つを除くすべてのシナリオで正常に動作します。ウィンドウは開いたままですが、バックグラウンドでアプリがクラッシュします。そのため、アプリがクラッシュしてもウィンドウがまだ開いているため、ユーザーは引き続きウィンドウに反応できます。

ユーザーがアプリ アカウントを押すと、それは単なる黒い画面であり、他には何もありません。

私は具体的にサービスを持っています:

これはアクティビティ「onCreate」で作成されます。

    ServiceConnectionToBilling mServiceConnection = new ServiceConnectionToBilling();
    bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"), mServiceConnection, Context.BIND_AUTO_CREATE);
    mInAppPurchasingEngine = new InAppPurchasingEngine(this, this, mServiceConnection);

だから私の質問は、どうすればこれに対処できますか?ユーザーがHOMEボタンを押す前に(これによりサービスウィンドウが閉じられるため)Back Buttonを呼び出そうとしましたが、もちろんHOMEボタンのオーバーライドはAndroidでは失敗するだけなので、これを処理する方法がわかりません。

PS私はこれを持っています:

public void onDestroy()
{ 
    if(mServiceConnection != null)
    {
        unbindService(mServiceConnection);
    }

    mGameScreen.DestoryEngine();

    super.onDestroy();
    finish();
}

スタックトレース:

http://pastebin.com/gakrL7qV

私はこのエラーを知っていますが、一体どのように対処すればよいのでしょうか? ホームボタンを使用してアプリを閉じたときにのみ発生します。

4

1 に答える 1

0

発生する理由は、「Pressing Home」のように onDestroy が呼び出されていないシナリオでサービスのバインドを解除していないためです。ホームを押すと「onPause」と「onStop」のみが呼び出されることに注意してください。したがって、この問題を修正するには、 「onPause」中にonDestroy(サービスのバインド解除)で行っていることを実行し、「onResume」を再度バインドする必要があるため、ユーザーがホームボタンを押すとバインド解除メソッドが適切に呼び出され、アクティビティが再開されると「onResume」がバインドを試みます再びサービス...

よろしく!

于 2013-07-03T01:04:02.190 に答える