【问题标题】:Android network client implementationAndroid网络客户端实现
【发布时间】:2014-04-23 20:33:04
【问题描述】:
我正在编写一个将 RTSP 流式传输到服务器的应用程序。使用“NetworkOnMainThreadException”,我需要在单独的线程上执行所有网络通信。我知道 AsyncTask 是一种在单独线程上执行网络操作的简化方式。但是,它的接口也是有限的(main 和 asynctask 之间的通信)。此外,从逻辑上讲,它似乎不应该用于长时间运行的任务。
有 Thread Runnable 支持的选项。它更加灵活和复杂。
使用 AsyncTask 实现客户端是否有意义,还是应该坚持使用 Thread Runnable?
【问题讨论】:
标签:
java
android
android-asynctask
client
runnable
【解决方案1】:
对于长时间运行的操作,您应该使用Thread。 AsyncTask 是短任务的最佳选择,只需几秒钟,直接由用户启动。 AsyncTask 的一个用例是按需从 Web 服务加载数据。 Thread 的用例是某个服务器和客户端之间的长时间运行连接,在该连接上不断交换数据。总而言之,使用AsyncTask 的原因:
- 任务只需几秒钟
- 任务由用户直接启动,例如通过
Button。
- 用户通过
ProgressBar 或其他一些指示器接收有关进度的反馈
以及使用Thread的原因:
- 任务需要很长时间才能执行或没有预定义的结束,例如服务器侦听连接
- 任务在用户不知情的情况下在后台运行
- 任务独立于
UI 运行,反馈很少。
您必须决定使用哪个选项,两者都有优点和缺点。但是您的问题听起来像Thread 可能对您更有用。如果您有任何其他问题,请随时提出。