1

我正在開發一個應用程序,我有一個按鈕用於播放和停止。這些按鈕可以很好地工作,但是當我播放音樂時,進入其他應用程序的背景,然後返回到我的應用程序,如果按下它,我的播放/停止按鈕將再次播放。這是一個問題,因爲我需要再次按播放按鈕(雖然音樂正在播放),然後按停止按鈕。有任何想法嗎?我的代碼是:Android應用程序中的停止/播放按鈕

boolean isOn = false; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    play=(Button)findViewById(R.id.button1); 

    play.setOnClickListener(new OnClickListener() {  
@Override 
public void onClick(View v) { 
if(isOn) { 
    stopService(new Intent(this, ServisZaStream.class)); 
     isOn = false; 

}else{ 
    startService(new Intent(this, ServisZaStream.class)); 
    isOn = true; 
    } 


    }); 

    } 
} 
+1

當你的應用程序在後臺時,你的應用程序會忘記你的布爾狀態 – JREN

回答

0

當您的應用程序已停止或暫停,可以儲存您ISON標誌軟件包:

@Override 
public void onSaveInstanceState(Bundle outState) { 

    outState.putBoolean("EXTRA_IS_ON", isOn); 
    super.onSaveInstanceState(outState); 
} 

,然後檢索它的onCreate:

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    if (savedInstanceState != null) { 
     isOn = savedInstance.getBoolean("EXTRA_IS_ON"); 
    } 
} 
+0

outState.putString(「EXTRA_IS_ON」,isOn);錯誤: Bundle類型中的putString(String,String)方法不適用於參數(String,boolean) – user2528081

+0

@ user2528081抱歉,正確的方法是** putBoolean(「EXSTRA_IS_ON」,isOn)**; – Andy

3

您需要一種方法來從您的應用程序讓你的後臺服務的當前狀態,並相應地在恢復您的應用程序設置的按鈕的狀態。

這是Android應用生命週期的一部分。活動發送到後臺時,任何未保存到包中的內容都可能會丟失。因此,您需要在應用恢復時檢索您感興趣的任何狀態。

Android的功能是通過這種方式來節省內存和CPU。

+0

謝謝,我明白你在說什麼我是年輕的開發人員我還在學習,你有任何示例或鏈接? – user2528081

0

你的應用程序忘記了布爾值的值,所以你需要這樣一個機制,它不會忘記布爾值的幫助下做到這一點..我通常做的單身類..你可以找到任何方式爲您應用程序也可以用單也的幫助下做到這一點...

相關問題