我想在用戶按下主頁按鈕時關閉活動。爲此,我使用下面的代碼:如何在主頁按鈕被按下時終止活動?
public void onPause() {
super.onPause();
this.finish();
}
它工作正常。但是,如果用戶按下「後退」按鈕,而不是「主頁」,它也會殺死活動。我希望後退按鈕能夠像往常一樣執行,即它應該讓用戶參與之前的活動。有什麼想法嗎?
以下是我的活動類的代碼:
public class HomeScreen extends Activity {
/** Called when the activity is first created. */
private Button btn_play;
private MediaPlayer mp = new MediaPlayer();
private static int AUDIO_NO = 1;
public static String isVideoSelected = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
btn_play = (Button)findViewById(R.id.btn_play);
btn_play.setOnClickListener(btn_listener);
if(isVideoSelected!="") isVideoSelected="";
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
play_audio(AUDIO_NO);
}
}, 1000);
} catch(Exception e) {
}
}
private void play_audio(int slno) {
try {
if(slno == 1) mp = MediaPlayer.create(getBaseContext(), R.raw.audio_1);
else if(slno == 2) mp = MediaPlayer.create(getBaseContext(), R.raw.audio_2);
mp.setLooping(false);
mp.setOnCompletionListener(audio_listener);
mp.start();
} catch(Exception e) {
// do nothing
}
}
private MediaPlayer.OnCompletionListener audio_listener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
try{
mp.release();
if(AUDIO_NO == 1) {
play_audio(2);
AUDIO_NO++;
}
} catch(Exception e) {
}
}
};
private View.OnClickListener btn_listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try{
if(mp.isPlaying()) {
mp.stop();
mp.release();
}
Intent intent = new Intent(getApplicationContext(), ScreenTwo.class);
startActivity(intent);
} catch(Exception e) {
} finally {
}
}
};
public void onUserLeaveHint() {
super.onUserLeaveHint();
try{
if(mp.isPlaying()) {
mp.stop();
mp.release();
}
btn_play = null;
} catch(Exception e) {
}
}
@Override
public void onDestroy() {
super.onDestroy();
try{
if(mp.isPlaying()) {
mp.stop();
mp.release();
}
btn_play = null;
} catch(Exception e) {
}
}
}
@ Yoni Samlan我在主屏幕上按下了一個名爲「play」的按鈕,將用戶帶到第二個屏幕。我也在主屏幕中播放背景音頻。現在,只要用戶按下主頁按鈕退出應用程序並再次回到主屏幕,「播放」按鈕不起作用。日誌條目如下所示:'03-07 19:47:36.062:WARN/AudioFlinger(3256):爲221 msecs寫入阻塞,170個延遲寫入,線程0xbec0'。所以我試圖殺死家庭印刷機上的活動。 – Sourav 2011-03-07 14:18:35
如果用戶按下「返回」按鈕退出應用程序並再次啓動,則主屏幕上的「播放」按鈕可以正常工作,而不是首頁。 – Sourav 2011-03-07 14:26:49
日誌可能比這更多嗎?但是如果您希望跨越活動邊界播放音樂,則應該考慮使用服務播放音樂。這裏還缺少大量的信息 - 例如,您現在如何播放音頻?媒體播放器?的Soundpool? – 2011-03-07 20:05:54