【发布时间】:2015-03-30 22:57:49
【问题描述】:
我目前正在开发一个应用程序,它允许用户通过 UDP 将传感器数据发送到 OSC receiver,没有恶意,用户可以完全控制一切。
当用户启用数据发送时,如果用户启用此传感器和轴进行传输,则每个传感器更改事件都会触发数据包的调度。
这可能会导致发送大量数据,例如如果用户想用他的手机中的很多参数来控制合成器(想想当你在空间中的方向改变音色时跳跃触发的鼓声)。
我现在测试了以下方法,但每种方法在不同的 Android 版本上都有缺点和/或崩溃:
- 使用
AsyncTask<String, Void, Boolean>并发送doInBackground(String... strings)中的数据。这种方法的缺点是在 Android 2.3.3 中可能会出现java.util.concurrent.RejectedExecutionException,因为这可能会创建太多线程。 - 使用
IntentService并发送数据onHandleIntent(Intent intent)。这种方法的缺点是在 Android 2.3.3 中 UI 缓慢且无响应。 - 使用绑定
Service并在服务的公开功能上发送数据。这在 Android 2.3.3 上就像一个魅力,但在 Android 4.4.4 上崩溃并带有android.os.NetworkOnMainThreadException。
还有哪些其他可能性?在绑定的Service 中运行AsyncTask<> 不会遇到这两个异常中的任何一个吗?
【问题讨论】:
标签: android android-asynctask android-service