在我的 Android
app
中,我启动了一个 Runnable
(称为 remoteUDPRunnable
),它建立了一个 UDP在新的
,如下所示:Thread
中与另一台设备连接
new Thread(remoteUDPRunnable).start();
在某些情况下,我想停止那个线程
(并取消UDP 连接
),但我不知道如何停止
我已经尝试将 Thread
实例保存在 variable
中并调用 myThread.interrupt()
但它不起作用。
我也试过像这样使用 Handler
:
final Handler remoteUDPRunnableHandler = new Handler();
remoteUDPRunnableHandler.post(remoteUDPRunnable);
所以我可以取消它:
remoteUDPRunnableHandler.removeCallbacks(remoteUDPRunnable);
这行得通,但是当我调用 post(remoteUDPRunnable)
方法时,我得到了一个 NetworkOnMainThreadException
。我还尝试将代码放在 AsyncTask
中的 Runnable
中,但它也不起作用。
有什么想法吗?我对此很陌生,对此我有些困惑。 谢谢
最佳答案
如果你写了 remoteUDPRunnable
的类你自己,你需要确保(以编程方式)线程结束。
来电thread.interrupt()
只在该线程中设置一个标志。但是,如果您从不检查它并用它做点什么,它就完全没用了。
在你的runnable中你需要调用Thread.interrupted()
, 如果它返回 true,则启动线程的关闭。小心,电话Thread.interrupted()
重置执行线程的中断标志。
此外,如果 InterruptedException
被抛出,中断标志也被重置,所以你可能需要调用 Thread.interrupt()
再次进入您的可运行状态。
关于java - Android Stop Runnable 在新线程中创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843785/