我正在构建一个Android应用程序,我基本上从Web内容提供商实现音乐播放器。 简而言之,我有一个玩家,“玩”,“停顿”,“停止”玩。同时我使用一个新线程来提供搜索栏的进度信息,以及带有长度和时间的textView。
我想问一下你对线程最好的方法的建议。我想在按下暂停时暂停线程,在按下停止时停止线程,并在按下播放时恢复/启动线程。
我有这样的事情:
Thread thread = new Thread(new Runnable()
{
public void run()
{
while(!finished && !stopped)
{//Do some action on Views...}}
即便如此,当我离开我的应用程序时,线程会完全死掉吗?它不会继续运行吗?
非常感谢,如果在其他地方得到解答,对不起。
答案 0 :(得分:2)
我在mediaPlayerDemo中使用Handler + Broadcast。 MediaPlayer在服务中运行,并使用 handler.post(runnable)制作一个圆圈。 在Runnable中我 sendBroadcast()并在我的活动中 onReceive 时更改textView
public void sendToUpdate() {
// handler
if (progressHandler == null) {
progressHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
}
progressHandler.removeCallbacks(progress);
progressHandler.post(progress);
}
Runnable progress = new Runnable() {
@Override
public void run() {
if (mp != null) {
musicCurrentTime = mp.getCurrentPosition();
musicLength = mp.getDuration();
Intent intent = new Intent();
intent
.setAction("com.cookie.media.MUSIC_UPDATE");
intent.putExtra("musicCurrentTime", musicCurrentTime);
intent.putExtra("musicId", musicId);
intent.putExtra("musicLength", musicLength);
sendBroadcast(intent);
}
progressHandler.removeCallbacks(progress);
progressHandler.postDelayed(progress, 1000);
}
};
喜欢这个 您可以添加 if(mp.isPlaying){} ,以避免在媒体播放器暂停或停止时消耗。
答案 1 :(得分:0)
> I would like to ask your advice on the best aproach on threading.
可以查看media player tutorial帮助
上的官方http://developer.android.com/guide/topics/media/mediaplayer.html