在onCreate()
的应用程序中,我绑定到InAppBillingService
。 onDestroy()
类中没有Application
方法。
如何在应用程序关闭后实现对unbindService()
的调用?
答案 0 :(得分:1)
如果Application对象被销毁,那么您的服务也应该被销毁。如果没有Application对象的实例,则不能运行其中一个应用程序组件。
如果您希望明确取消绑定该服务,可以让您的活动在onStart
中绑定到该活动,然后在onStop
取消绑定。
答案 1 :(得分:1)
可能这不是最好的方法。这不是一个好习惯,因为只要您的应用程序不是最佳方案,您的服务就会生效。
我的建议是在具体活动中使用绑定。这样,您可以在活动暂停时取消绑定,并在恢复活动时重新绑定。如果需要绑定多个活动,请创建一个执行此操作的超类,并使用您的具体活动类对其进行扩展。
如果您需要的服务将贯穿整个应用程序的生命周期,那么正确的方法是使用foreground service。它具有最高优先级,因此当操作系统开始释放资源时,它不会被首先杀死。这种方法的另一个好处是,只要您的服务,您的应用程序就会生存,但不会相反。生命周期的控制在Service
但不在应用程序中,这是正确的方法。
答案 2 :(得分:0)
根据Google在http://developer.android.com/google/play/billing/billing_integrate.html#billing-service上的文档:
重要提示:请记住在应用内结算服务时取消绑定 你完成了你的活动。如果你没有取消绑定,那么打开服务 连接可能会导致设备性能下降。这个 示例显示如何对服务执行解除绑定操作 通过覆盖来连接到应用内结算,称为mServiceConn activity的onDestroy方法。
这意味着让服务绑定到Application对象是个坏主意,因为它会在应用程序运行的整个过程中占用资源。而是绑定到Activity或Fragment,然后在他们的onDestroy方法中取消绑定。