我有一個應用程序是一個菜單有幾個選項,每個選項時,選擇將導致一項新的活動。 我也有使用服務在後臺播放音樂。無論什麼活動聚焦,我都希望我的音樂能夠持續演奏。如何知道應用程序在後臺?
我的問題是:
- 如果我沒有覆蓋的onPause()或的onStop(),當我打開另一個活動的音樂將去罰款。但是當我按下home鍵時,音樂仍然播放。
- 如果我重寫onPause()或onStop(),當按Home按鈕時音樂會停止,但當另一個活動打開時,它也會停止。
那麼我現在該做什麼?
我有一個應用程序是一個菜單有幾個選項,每個選項時,選擇將導致一項新的活動。 我也有使用服務在後臺播放音樂。無論什麼活動聚焦,我都希望我的音樂能夠持續演奏。如何知道應用程序在後臺?
我的問題是:
那麼我現在該做什麼?
您可以覆蓋onPause()
並使用布爾標誌。
如果您正在啓動新活動,請將布爾值設置爲true
。當onPause()
被調用時,你會知道它是不是true
那麼你應該停止音樂。
boolean keepPlaying = false;
protected void onPause() {
if(!keepPlaying)
stopService(new Intent(this, MediaPlayerServices.class));
super.onPause();
}
我使用的標誌,它的默認值設置爲false.So時的onPause是通話,如果標誌是假的話,我停止音樂。 但是,當我開始一個新的活動,然後回到菜單,標誌的值現在是真實的。當按Home鍵時,音樂仍會播放。 另一個問題是,如果我在另一個活動中按下主頁按鈕,音樂也會繼續播放。 – antonixic
是的,上面的代碼並沒有涵蓋所有情況,它只是給你提供的想法。我會在'onResume()'中將'keepPlaying'設置爲'false',這樣它就不會失效。你應該重寫'onBackPressed()'來跟蹤每個子Activity中的'keepPlaying'。在每項活動中您都需要一個這樣的標誌,或者您可以在您的服務中製作_one_'static'' keepPlaying'標誌。 – Sam
只需在打開新的活動之前將'flag'設置爲true,並將其設置爲false,onPause()就可以實現。我沒有得到'靜態標誌'部分,你能進一步解釋嗎?謝謝! – antonixic
發表您的代碼的onPause()unstop() – Frank