【发布时间】:2010-11-11 04:08:06
【问题描述】:
好的,所以我编写的应用程序有一个服务(用于跟踪 GPS 数据),它有一个主要活动,它在 onStart() 方法中使用 bindService 绑定到它,并在 onStop() 方法中与服务解除绑定使用unbindService(ServiceConnection)。
我还有一个 Activity,它是一个选项屏幕,通过按下主 Activity 上的按钮启动。在此选项屏幕上,我有一个显示“在后台运行”的复选框,如果设置为 true,则意味着当用户使用 Home 或 Back 按钮退出应用程序时,服务将继续运行,而不是打开 GPS关闭。
如果设置为 true,我通过调用 this.startForeground onUnbind 和 this.stopForeground onRebind 来执行此操作,如果设置为 false,则分别停止和启动我的位置读取器 onUnbind 和 onRebind。
如果该服务在后台运行,它还会显示一条通知,以确保用户了解 GPS 仍在运行并耗尽他们的电量。此通知的显示和停止依赖于 startForeground 和 stopForeground 方法。
因此,问题在于无论此设置是否正确,如果我正在查看选项屏幕,我希望服务继续运行,并且我不希望出现该通知。因此,如果我按下按钮进入选项屏幕,我设置一个设置为 true 的标志,如果标志为 true,则不要调用 unbindService。
这可行,除了一个小问题。如果用户在查看选项屏幕时点击主页按钮,则服务不会停止(因为它仍然绑定到主屏幕),如果它应该继续运行,则不会显示警告通知(当然,这意味着该服务仍被视为在后台)。
我应该如何让这个应用程序按照我想要的方式运行?
【问题讨论】:
标签: android android-service android-homebutton