我正在编写应用程序,在我的 MainActivity 中有项目列表。当单击项目时,新的 DetailsActivity 开始显示该项目的详细信息和购买它的按钮。此应用程序基于 Google 的地下城示例。
我想知道我应该如何管理与 BillingService 的连接?
选项 1)我是否应该像在地下城示例中一样在 MainActivity 中创建 BillingService,然后在请求购买时从每个 ProjectDetailsActivity 绑定到该服务?我不确定绑定到绑定到 IMarketBillingService 的 BillingService 是否不会变得太混乱......
我试图这样做,但我不确定如何从 MainActivity 以外的 Activity 绑定到 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?我是的,怎么样?用 Parcelable 什么的?我没有看到这样做的可能性,我认为这不是正确的方法。
选项 3)我应该在每个 ProjectDetailsActivity 中创建 BillingService 吗?如上所述,我认为这不行,因为所有这些服务在购买后都是多余的。
其他选择..?
我想听听如何解决这个问题?提前致谢。