在后台发送大量数据

时间:2015-03-30 22:57:49

标签: android android-asynctask android-service

我目前正在开发一款应用程序,它允许用户通过UDP将传感器数据发送到OSC receiver,没有恶意,用户可以完全控制所有内容。

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

这可能导致要发送大量数据,例如如果用户想要用他手机中的大量参数来控制合成器(想想在空间方向改变音色的同时跳跃引发的鼓声)。

我现在测试了以下方法,但每个方法在不同的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. 使用绑定的Service并在服务的公开功能上发送数据。这就像Android 2.3.3上的魅力一样,但在Android 4.4.4上使用android.os.NetworkOnMainThreadException崩溃。
  4. 还有哪些其他可能性?在绑定AsyncTask<>中运行Service是否会遇到两个例外中的任何一个?

1 个答案:

答案 0 :(得分:1)

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

顺便说一下,你的这个应用程序会杀死你的电池。但我怀疑你知道这一点并且没问题。