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