2012-11-18 76 views
0

我有一個應用程序是一個菜單有幾個選項,每個選項時,選擇將導致一項新的活動。 我也有使用服務在後臺播放音樂。無論什麼活動聚焦,我都希望我的音樂能夠持續演奏。如何知道應用程序在後臺?

我的問題是:

  • 如果我沒有覆蓋的onPause()或的onStop(),當我打開另一個活動的音樂將去罰款。但是當我按下home鍵時,音樂仍然播放。
  • 如果我重寫onPause()或onStop(),當按Home按鈕時音樂會停止,但當另一個活動打開時,它也會停止。

那麼我現在該做什麼?

+1

發表您的代碼的onPause()unstop() – Frank

回答

1

您可以覆蓋onPause()並使用布爾標誌。
如果您正在啓動新活動,請將布爾值設置爲true。當onPause()被調用時,你會知道它是不是true那麼你應該停止音樂。

boolean keepPlaying = false; 

protected void onPause() { 
    if(!keepPlaying) 
     stopService(new Intent(this, MediaPlayerServices.class)); 
    super.onPause(); 
} 
+0

我使用的標誌,它的默認值設置爲false.So時的onPause是通話,如果標誌是假的話,我停止音樂。 但是,當我開始一個新的活動,然後回到菜單,標誌的值現在是真實的。當按Home鍵時,音樂仍會播放。 另一個問題是,如果我在另一個活動中按下主頁按鈕,音樂也會繼續播放。 – antonixic

+0

是的,上面的代碼並沒有涵蓋所有情況,它只是給你提供的想法。我會在'onResume()'中將'keepPlaying'設置爲'false',這樣它就不會失效。你應該重寫'onBackPressed()'來跟蹤每個子Activity中的'keepPlaying'。在每項活動中您都需要一個這樣的標誌,或者您可以在您的服務中製作_one_'static'' keepPlaying'標誌。 – Sam

+0

只需在打開新的活動之前將'flag'設置爲true,並將其設置爲false,onPause()就可以實現。我沒有得到'靜態標誌'部分,你能進一步解釋嗎?謝謝! – antonixic

相關問題