在发送UDP数据报的Android应用程序中使用线程、处理程序和异步任务

在发送UDP数据报的Android应用程序中使用线程、处理程序和异步任务,android,sockets,udp,udpclient,Android,Sockets,Udp,Udpclient,在开发我的第一款Android应用程序时,我需要解决以下问题: 该应用程序每秒从启用蓝牙功能的传感器接收约100个测量值。这些测量值现在应该通过网络传输到另一个设备 由于传感器值应该尽快可用,我打算通过UDP将它们从智能手机发送到网络设备。但是,我不确定设置UDP套接字和发送逻辑的最佳方法是什么 我发现了几个使用结构的多线程示例,如Thread、Handler、AsyncTask、Runnable等。但这些示例似乎都不适合我的问题。例如,有些人似乎会在每个要发送的消息中产生一个线程,这对于我的应

在开发我的第一款Android应用程序时,我需要解决以下问题:
该应用程序每秒从启用蓝牙功能的传感器接收约100个测量值。这些测量值现在应该通过网络传输到另一个设备

由于传感器值应该尽快可用,我打算通过UDP将它们从智能手机发送到网络设备。但是,我不确定设置UDP套接字和发送逻辑的最佳方法是什么

我发现了几个使用结构的多线程示例,如
Thread
Handler
AsyncTask
Runnable
等。但这些示例似乎都不适合我的问题。例如,有些人似乎会在每个要发送的消息中产生一个线程,这对于我的应用程序场景来说似乎是一个不必要的开销


我的想法是让主线程生成一个子线程,该子线程创建UDP套接字并不断检查传入消息队列,并通过UDP数据报在队列中发送接收到的消息。我很高兴也很感谢一些指针,这些指针是用来处理线程的结构能够实现这一点的。

这里有各种技术的混合,而且它们并不占同一个位置。难怪你会感到困惑

Runnable—这只是一个可以随时保存和调用的函数。它可能在编写解决方案时有用,但它本身并没有提供任何异步功能

处理程序-处理程序是在特定线程上运行的消息队列。那个线程一定设置了一个活套。如果您想将消息从一个线程发布到另一个线程,这可以是消息传递机制,但它本身不提供异步功能

线程-是一个实际的线程。它是一个可以与主线程并行运行的函数。这可能是你真正想要的

AsyncTask-基本上是一个线程,在运行某些代码之前和之后在主线程上运行某些代码。它消除了自己传递信息的负担。这是一种简化,但它是一个足够好的解释。AsyncTasks只能用于1次快速操作。虽然您将看到它被用于HTTP传输的示例,但实际上不应该这样


基本上,您需要的是异步部分的线程,以及向该线程传递消息的方法。具有自己的循环器和该循环器的处理程序的线程将运行良好。然后线程可以从处理程序读取消息,传感器读取代码可以将其发送到处理程序。当线程有工作要做时,线程本身将在后台运行,直到您在关机时中断它以结束线程。

太好了,谢谢!我还偶然发现了Android中的
HandlerThread
,它似乎结合了线程、循环器和处理程序。您建议使用什么?HandlerThread基本上是一个实用程序,它为您启动一个带有活套的线程。如果您计划使用处理程序,也可以使用它,它将为您节省几行代码。