我的android应用程序在扩展Application的类的onCreate()回调中启动服务。该服务仅在应用程序运行时执行与用户相关的一些后台任务。出于这个原因,我想在应用程序的最后一个活动关闭时关闭服务。我试图在回调onTerminate()中执行关闭服务,但它永远不会被调用。那么什么是关闭服务的最佳地点呢?
谢谢!
答案 0 :(得分:2)
Android服务一旦启动,将继续运行,直到调用Context.stopService()或stopSelf()。
您可以使用各种钩子来使用Context.stopService(服务本身,或其中一个活动中的onDestroy()/ onPause回调或单击按钮)来停止服务。
Android确实会进行一些资源管理,但在Android决定终止您的服务之前可能需要很长时间。而正在运行但没有做任何事情的服务只会消耗其他应用可能需要的手机资源。
在您的情况下,您上次活动的onPause方法将会被调用,因此是停止服务的正确位置。
答案 1 :(得分:0)
当您的活动因任何原因暂停时,将进行onPause()回调,并且您知道在发生这种情况时,在调用onResume()之前,您的应用将不再可见。如果您的服务有理由在用例中运行可能很快再次启动,则应该在服务中添加onPause()调用的条目,以设置延迟服务终止。在onResume()中,您可以通过另一个条目取消延迟终止。