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を作成する必要がありますか?上記のように、これらのサービスはすべて購入後に冗長になるため、問題ないと思います。
別のオプション..?
これを解決する方法を聞きたいですか?前もって感謝します。