当按下主页按钮时,当查看不同的活动时,服务仍然绑定到主要活动

时间:2010-11-11 04:08:06

标签: android android-service android-homebutton

好的,所以我编写的应用程序有一个服务(跟踪GPS数据),其中一个主要活动使用bind onStart()方法绑定到它,并从其中的服务解除绑定{{ 1}}使用onStop()的方法。

我还有一个活动,它是一个选项屏幕,通过按主活动上的按钮启动。在这个选项屏幕上,我有一个复选框,上面写着“在后台运行”,如果设置为true,则表示当用户使用Home或Back按钮退出应用程序时,服务将继续运行,而不是转动GPS关闭。

如果设置为true,则调用unbindService(ServiceConnection)this.startForeground onUnbind,并分别停止和启动我的位置阅读器this.stopForeground onRebindonUnbind。设置是假的。

如果服务在后台运行,它还会显示通知,以确保用户了解GPS仍在运行并耗尽其电量。依赖onRebindstartForeground方法显示和停止此通知。

所以,问题在于,无论此设置是否为真,如果我正在查看选项屏幕,我希望服务继续运行,我不希望该通知出现。所以我设置了一个标志,如果我按下按钮进入选项屏幕,则设置为true,如果标志为true,则不调用unbindService。

这有效,除了一个小问题。如果用户在查看选项屏幕时点击主页按钮,则服务不会停止(如果它仍然绑定到主屏幕),并且如果它应该继续运行,则它不会显示警告通知(当然,这意味着该服务仍被视为在后台)。

我应该如何让这个应用程序以我想要的方式运行?

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了一个似乎有用的解决方案。我将选项屏幕绑定到activity的onStart()方法中的服务,并在onStop()中再解除绑定。之前的活动的onStop()方法直到新的onResume()方法之后才被调用,所以它可以工作。

有没有人有更好的方法?将活动绑定到实际上不需要访问的服务似乎很愚蠢。