如题,我在做一个播放器。当activity点播放按钮的时候就启动service来播放音乐,
同时service根据音乐是否正在播放,用handler来更新activity的歌词。但是我点了播放之后,再点home键,也就是想后台播放,此时avd模拟器就卡住死机了。我在想是不是如果activity不可见,service就不能更新activity的UI了?我是用timer另外起一线程来进行UI更新的。如果要后台播放,就不能更新歌词了?
核心代码如下:
timer.schedule(new TimerTask()
{
@Override
public void run()
{
while(player.isPlaying()){
Message msg=new Message();
Bundle b=new Bundle();
int position=player.getCurrentPosition();
b.putLong("position", position);
if(lyric.sentences.get(currentIndex).isIntime(position)){
b.putString("line",lyric.sentences.get(currentIndex).content );
}else{
b.putString("line", null);
currentIndex++;
}
msg.setData(b);
MusicPlayerActivity.seekBarHandler.sendMessage(msg);
}
}
}, 5, 500);
同时service根据音乐是否正在播放,用handler来更新activity的歌词。但是我点了播放之后,再点home键,也就是想后台播放,此时avd模拟器就卡住死机了。我在想是不是如果activity不可见,service就不能更新activity的UI了?我是用timer另外起一线程来进行UI更新的。如果要后台播放,就不能更新歌词了?
核心代码如下:
timer.schedule(new TimerTask()
{
@Override
public void run()
{
while(player.isPlaying()){
Message msg=new Message();
Bundle b=new Bundle();
int position=player.getCurrentPosition();
b.putLong("position", position);
if(lyric.sentences.get(currentIndex).isIntime(position)){
b.putString("line",lyric.sentences.get(currentIndex).content );
}else{
b.putString("line", null);
currentIndex++;
}
msg.setData(b);
MusicPlayerActivity.seekBarHandler.sendMessage(msg);
}
}
}, 5, 500);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货