1
我有一個服務類運行我的mediaplayer它工作正常,我唯一的問題是,當我的服務創建mediaplayer它有點暫停我的用戶界面,像它的掛起或東西,直到我的mediaplayer完成創建它自己。我想要發生的是,當我按下播放按鈕時,出現一個吐司消息並顯示「正在連接」,當mediaplayer準備顯示吐司消息說「已連接」時,mediaplayer開始播放音樂,不知何故,我的吐司不顯示,如果他們就其後期..mediaplayer和服務類
繼承人我的服務代碼:
public class myservice extends Service {
MediaPlayer player;
private Handler UIHandler = new Handler();
private Uri source = Uri.parse("http://www.mydomain.com:8000/listen.mp3");
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
public void onCreate() {
Toast.makeText(this, "Connecting", Toast.LENGTH_SHORT).show();
player = MediaPlayer.create(this, source);
}
private void testtoast() {
Toast.makeText(this, "Connecting", Toast.LENGTH_SHORT).show();
}
public void onStart(Intent intent, int StartId) {
Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer player) {
// TODO Auto-generated method stub
player.start();
}
});
}
public void onDestroy() {
Toast.makeText(this, "Destroyed", Toast.LENGTH_SHORT).show();
player.stop();
player.release();
}
}
我個人從未使用過'MediaPlayer'類,所以我不知道使用它的任何方法,或者當'.create()'時它的行爲如何。然而,我認爲值得指出的是'Service'在UI線程內運行,*不在其自己的線程或進程內運行。這意味着您在'Service'中執行的任何耗時的工作,例如'onCreate()',都會影響UI的響應性,如果不小心的話,甚至會導致ANR。因此,您在「服務」中執行的任何耗時或過程密集型工作仍應在單獨的「線程」上完成。 – Trevor 2012-02-06 18:03:20
感謝指出,特雷弗你有一個樣本,我怎麼能做到這一點..我是一個noob在Android真的 – HeartlessArchangel 2012-02-06 23:43:40