Android网络客户端实现

时间:2014-04-23 20:33:04

标签: java android android-asynctask client runnable

我正在编写将RTSP流式传输到服务器的应用程序。使用' NetworkOnMainThreadException',我需要在单独的线程上执行所有网络通信。我知道AsyncTask是一种在单独的线程上执行网络操作的简化方法。但是,它的接口也受到限制(main和asynctask之间的通信)。此外,从逻辑上讲,它似乎不应该用于长期运行的任务。

有Thread Runnable支持选项。它更加灵活和复杂。

使用AsyncTask实现客户端是否有意义,还是应该坚持使用Thread Runnable?

1 个答案:

答案 0 :(得分:1)

对于长时间运行的操作,您应该使用ThreadAsyncTask是短任务的最佳选择,只需几秒钟,直接由用户启动。 AsyncTask的用例将按需从Web服务加载数据。 Thread的用例将是某个服务器和连续交换数据的客户端之间的长时间连接。总而言之,使用AsyncTask

的原因
  • 任务只需几秒钟
  • 该任务由用户直接启动,例如通过Button
  • 用户通过ProgressBar或其他指标
  • 收到有关进度的反馈

使用Thread的原因:

  • 任务需要很长时间才能执行,或者没有预定义的结束,例如服务器正在侦听连接
  • 任务在没有用户知识的情况下在后台运行
  • 该任务独立于UI运行,只有极少的反馈。

您必须决定使用哪个选项,两者都有优点和缺点。但你的问题听起来像Thread可能对你更有用。如果您有任何其他问题,请随时提出。

相关问题