在android.app.Application中取消绑定服务

时间:2014-11-02 17:48:29

标签: java android

onCreate()的应用程序中,我绑定到InAppBillingServiceonDestroy()类中没有Application方法。

如何在应用程序关闭后实现对unbindService()的调用?

3 个答案:

答案 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方法中取消绑定。