应用程序线程与服务线程

zer*_*qob 27 service multithreading android media-player

在活动中的线程或服务中的线程中放置冗长的网络访问代码有哪些优点/缺点?它会如何影响应用程序?我正在编写流媒体音频播放器,从我到目前为止所读到的内容中将代码放入服务中仍然会阻止应用程序,因此需要一个新的线程,是否有人知道放置这段代码是否更有意义在服务中.

syn*_*nic 36

是的,服务中的阻止操作仍将阻止该应用程序.尽管首次亮相,服务并不仅仅是为了在后台运行任务.它们用于运行任务,其生命周期独立于Activity生命周期(IE,它们可能在Activity关闭后继续).

在活动开始时开始并在活动结束时结束的服务是无用的.

在您传输音频的情况下,您甚至可能希望在用户关闭活动后流式传输音频,在这种情况下,您应该使用服务,但是您仍然需要一个线程(或AsyncTask)来阻止任务.

  • 活动中的线程在配置更改期间根本不会被销毁.但是,它们可能具有对旧活动的本地引用,这可能是一个问题. (8认同)
  • 另请注意,当配置(读取:方向)发生变化时,"Activity"中的线程将被销毁!对于"服务"中的线程,情况并非如此. (3认同)