在后台发送大量数据

Sending a lot of data in background

我目前正在开发一个应用程序,让用户可以通过 UDP 将传感器数据发送到 OSC receiver,没有恶意,用户可以完全控制一切。

当用户启用数据发送时,如果用户启用此传感器和轴进行传输,则每个传感器更改事件都会触发数据包的发送。

这可能会导致需要发送大量数据,例如如果用户想通过他的手机 phone 控制合成器的大量参数(想想当你在 space 中的方向改变音色时跳来跳去触发的鼓声)。

我现在已经测试了以下方法,但每个方法都有缺点 and/or 在不同的 Android 版本上会崩溃:

  1. 使用AsyncTask<String, Void, Boolean>并发送doInBackground(String... strings)中的数据。这种方法的缺点是可能 Android 2.3.3 中的 java.util.concurrent.RejectedExecutionException,因为这可能会创建太多线程。
  2. 使用IntentService并发送数据onHandleIntent(Intent intent)。这种方法的缺点是 Android 2.3.3.
  3. 中的 UI 缓慢且无响应
  4. 使用绑定 Service 并在服务的公开功能上发送数据。这在 Android 2.3.3 上就像一个魅力,但在 Android 4.4.4 上崩溃并出现 android.os.NetworkOnMainThreadException.

还有哪些可能性? 运行在边界 ServiceAsyncTask<> 不会 运行 进入两个异常中的任何一个吗?

为什么不使用单个线程而不是 AsyncTask?有一个事件循环等待数据发送到它,然后将数据发送到服务器?基本上它是一个 AsyncTask,它在数据发布到它之前永不结束并休眠。此线程可以由 Activity 或服务拥有,以对您有意义的为准。

顺便说一句,你的这个应用程序会耗尽你的电池。但我怀疑你知道并接受它。