好的,所以我寫的應用程序有一個服務(跟蹤GPS數據)與一個主要活動綁定到它與bindService它的onStart()
方法,並使用unbindService(ServiceConnection)
從onStop()
方法中的服務解除綁定。服務仍然綁定到主要活動時按下主頁按鈕,當查看不同的活動
我還有一個活動,它是一個選項屏幕,通過按下主活動上的按鈕啓動。在此選項屏幕上,我有一個複選框,顯示「在後臺運行」,如果設置爲true,則表示當用戶使用Home或Back按鈕退出應用程序時,該服務將繼續運行,而不會轉動GPS關閉。
我通過調用this.startForeground onUnbind
和this.stopForeground onRebind
,如果設置爲真,並停止和開始分別我的位置讀者onUnbind
和onRebind
如果設置爲false做到這一點。
如果服務在後臺運行,它還會顯示一條通知,以確保用戶瞭解GPS仍在運行並耗盡其電量。依靠startForeground
和stopForeground
方法顯示並停止此通知。
因此,問題在於這個設置是否屬實,如果我正在查看選項屏幕,我希望服務繼續前進,而且我不希望出現此通知。所以我設置了一個標誌,如果我點擊按鈕進入選項屏幕,則設置爲true,如果標誌爲true,則不調用unbindService。
這有效,除了一個小問題。如果用戶在查看選項屏幕時點擊主頁按鈕,則該服務如果應該是(因爲它仍然綁定到主屏幕),則不會停止,並且如果它應該保持運行,則不會顯示警告通知(當然,這意味着該服務仍被視爲在後臺)。
我應該如何讓這個應用程序按照我想要的方式行事?