2010-11-11 63 views
0

好的,所以我寫的應用程序有一個服務(跟蹤GPS數據)與一個主要活動綁定到它與bindService它的onStart()方法,並使用unbindService(ServiceConnection)onStop()方法中的服務解除綁定。服務仍然綁定到主要活動時按下主頁按鈕,當查看不同的活動

我還有一個活動,它是一個選項屏幕,通過按下主活動上的按鈕啓動。在此選項屏幕上,我有一個複選框,顯示「在後臺運行」,如果設置爲true,則表示當用戶使用Home或Back按鈕退出應用程序時,該服務將繼續運行,而不會轉動GPS關閉。

我通過調用this.startForeground onUnbindthis.stopForeground onRebind,如果設置爲真,並停止和開始分別我的位置讀者onUnbindonRebind如果設置爲false做到這一點。

如果服務在後臺運行,它還會顯示一條通知,以確保用戶瞭解GPS仍在運行並耗盡其電量。依靠startForegroundstopForeground方法顯示並停止此通知。

因此,問題在於這個設置是否屬實,如果我正在查看選項屏幕,我希望服務繼續前進,而且我不希望出現此通知。所以我設置了一個標誌,如果我點擊按鈕進入選項屏幕,則設置爲true,如果標誌爲true,則不調用unbindService。

這有效,除了一個小問題。如果用戶在查看選項屏幕時點擊主頁按鈕,則該服務如果應該是(因爲它仍然綁定到主屏幕),則不會停止,並且如果它應該保持運行,則不會顯示警告通知(當然,這意味着該服務仍被視爲在後臺)。

我應該如何讓這個應用程序按照我想要的方式行事?

回答

0

好的,所以我找到了一個似乎可行的解決方案。我將選項屏幕綁定到activity的onStart()方法中的服務,並在onStop()中再次解除綁定。之前的活動的onStop()方法不會在新的onResume()方法之後調用,因此它可以工作。

有人有更好的辦法嗎?將一個活動綁定到一個實際上不需要訪問的服務似乎很愚蠢。

相關問題