Android 上是不是总是有一个计费服务实例?
Posted
技术标签:
【中文标题】Android 上是不是总是有一个计费服务实例?【英文标题】:Is there always one instance of Billing Service on Android?Android 上是否总是有一个计费服务实例? 【发布时间】:2012-08-22 16:10:57 【问题描述】:在 Google 的 In App Billing 示例(Dungeons)中,在主 Activity onCreate 中创建了一个 Service 实例:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mHandler = new Handler();
mDungeonsPurchaseObserver = new DungeonsPurchaseObserver(mHandler);
mBillingService = new BillingService();
mBillingService.setContext(this);
....
在接收器中,服务由 context.startService 启动。
private void notify(Context context, String notifyId)
Intent intent = new Intent(Consts.ACTION_GET_PURCHASE_INFORMATION);
intent.setClass(context, BillingService.class);
intent.putExtra(Consts.NOTIFICATION_ID, notifyId);
context.startService(intent);
会以某种方式通知使用 onCreate 中创建的某个实例,还是会创建另一个作为实际服务运行的此类实例?
【问题讨论】:
【参考方案1】:“总是一个实例”是什么意思?那很重要吗? 据我所知,当接收者收到它时,它会启动服务并检查用户是否实际购买了它(即获取购买信息)。服务完成后,它会向您发送一条广播消息,以便您采取相应措施。我不认为它总是在后台运行。
【讨论】:
据我了解,服务已启动,将一直运行直到终止。在 Dungones 示例中,它已完成: public void unbind() try unbindService(this); catch (IllegalArgumentException e) 但这只在 onCreate 方法中创建的实例上调用,所以如果有两个实例第二个会泄漏? 为什么要了解库的内部功能。你可以简单地使用它。我正在使用这个库:robotmedia.net/2011/06/… 它比 Google 提供的更简单。 但是,我认为该服务会进行网络连接并更新内容并在完成时终止。如果它启动两次,它将运行两次并通知您的应用两次。我认为这不是一个大问题。不可能有泄漏。以上是关于Android 上是不是总是有一个计费服务实例?的主要内容,如果未能解决你的问题,请参考以下文章
如何按实例名称获取 GCP 计费? (不是按类型)资源和计费 sku id 之间是不是存在关联?