如何停止后台套接字线程

时间:2015-01-09 07:28:19

标签: android multithreading serversocket

我创建的应用程序将在用户点击开始按钮时向服务器发送音频流。为此我创建了一个套接字线程将音频发送到服务器。它在按下停止按钮后停止。它工作正常,但问题是当我开始流式传输并从当前活动导航到不同活动时,通过按后退按钮或从操作栏菜单进入主屏幕以停止流式传输无法停止流式传输。这意味着线程正在后台运行。

所以我的问题是如何停止该线程或流媒体。

3 个答案:

答案 0 :(得分:0)

尝试在导航到其他活动之前关闭套接字。

答案 1 :(得分:0)

覆盖onPause()方法并关闭那里的套接字。

答案 2 :(得分:0)

一个相当干净的解决方案是在你的线程之间共享一个volatile标志。您的音频流线程应在每次处理数据块时检查此项,关闭连接并在已设置为false时停止。调用onPause()时,您的UI线程可以将其设置为false - 或者可能更适合onStop(),因为这表示您的Activity不再可见。

这可能意味着您的流式传输线程会在几分之一秒内挂起,并且会在发送的音频中稍微减少一点,但这在实践中不太可能成为问题。