永发信息网

既然service跟Ui线程在同一个线程,那为什么在service播放音乐

答案:3  悬赏:80  手机版
解决时间 2021-11-14 14:21
  • 提问者网友:玫瑰园
  • 2021-11-14 09:09
既然service跟Ui线程在同一个线程,那为什么在service播放音乐
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-11-14 10:20
service中可以下载,但是你要保证在系统的规定crash时间内完成,否则,你就会阻塞UI.你问为什么播放不会阻塞,应为MediaPlayer使用了Handler + Looper 去更新UI. public MediaPlayer() { Looper looper; if ((looper = Looper.myLooper()) != null) { mEventHandler = new EventHandler(this, looper); } else if ((looper = Looper.getMainLooper()) != null) { mEventHandler = new EventHandler(this, looper); } else { mEventHandler = null; } native_setup(new WeakReference(this)); }不知你是否能看懂
全部回答
  • 1楼网友:空山清雨
  • 2021-11-14 11:58
简单说就是Mediaplayer类的创建不在UI线程,所以不会阻塞UI。如果想更详细的了解,需要先学习一下Looper的概念及用法,再去看MediaPlayer的源码,就可以理解了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯