2

MainActivityにアイテムのリストがあるアプリケーションを書いています。アイテムがクリックされると、新しいDetailsActivityが開始され、このアイテムの詳細と購入するためのボタンが表示されます。このアプリは、Googleのダンジョンの例に基づいています。

BillingServiceへの接続をどのように管理すればよいのでしょうか。

オプション1) Dungeonsの例のようにMainActivityでBillingServiceを作成し、購入をリクエストするときにすべてのProjectDetailsActivityからそのサービスにバインドする必要がありますか?IMarketBillingServiceにバインドしているBillingServiceにバインドするのが面倒にならないかどうかはわかりません...

これを実行しようとしましたが、MainActivity以外のアクティビティからBillingServiceにバインドする方法がわかりません。私はあなたが通常サービスにバインドする方法でそれをしました:

//ProjectDetailsActivity.java
private ServiceConnection billingConnection = new ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        mBillingService = ((BillingService.MyBinder)service).getService();
        if(mBillingService!=null)
            Log.d(tag, "Bound to BillingService");
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        mBillingService = null;
    }
};

public void unbind() {
    try {
        unbindService(billingConnection);
    } catch (IllegalArgumentException e) {
        // This might happen if the service was disconnected
    }
}

onCreate(){...}

onStart(){...
billingIntent = new Intent(ProjectDetailsActivity.this, BillingService.class);
bindService(billingIntent, billingConnection, Context.BIND_AUTO_CREATE);
...}

オプション2)どういうわけかBillingServiceをMainActivityからProjectDetailsActivitiesに渡す必要がありますか?はい、どうやって?パーセラブルか何かで?私はこれを行う可能性を見ていませんでした、そして私はそれが正しい方法ではないと思いました。

オプション3)すべてのProjectDetailsActivityにBillingServiceを作成する必要がありますか?上記のように、これらのサービスはすべて購入後に冗長になるため、問題ないと思います。

別のオプション..?

これを解決する方法を聞きたいですか?前もって感謝します。

4

1 に答える 1

1

どちらのオプションもありません。サービスの「作成」や「受け渡し」については考えないでください。意図を持ってあらゆる活動からサービスと通信することができます。

これを処理するAndroidアプリ内課金用のオープンソースライブラリを作成しました。ソースコードは、サービスに関するいくつかの概念を明確にするのにも役立つ場合があります。

于 2012-09-02T00:21:15.810 に答える