Java Android网络客户端实现
我正在编写一个将RTSP流式传输到服务器的应用程序。对于“NetworkOnMainThreadException”,我需要在单独的线程上执行所有网络通信。我知道AsyncTask是在单独的线程上执行网络操作的一种简化方式。但是,它的接口也受到限制(主任务和异步任务之间的通信)。而且,从逻辑上讲,它似乎不应该用于长时间运行的任务 有一个线程可运行的备份选项。它更加灵活和复杂Java Android网络客户端实现,java,android,android-asynctask,client,runnable,Java,Android,Android Asynctask,Client,Runnable,我正在编写一个将RTSP流式传输到服务器的应用程序。对于“NetworkOnMainThreadException”,我需要在单独的线程上执行所有网络通信。我知道AsyncTask是在单独的线程上执行网络操作的一种简化方式。但是,它的接口也受到限制(主任务和异步任务之间的通信)。而且,从逻辑上讲,它似乎不应该用于长时间运行的任务 有一个线程可运行的备份选项。它更加灵活和复杂 使用AsyncTask实现客户端有意义吗?还是我应该坚持线程可运行?对于长时间运行的操作,您应该使用线程。AsyncTas
使用AsyncTask实现客户端有意义吗?还是我应该坚持线程可运行?对于长时间运行的操作,您应该使用
线程。AsyncTask
是短任务的最佳选择,短任务只需几秒钟,由用户直接启动。AsyncTask
的一个用例是按需从web服务加载数据。线程
的一个用例是某个服务器和客户端之间的一个长时间运行的连接,通过该连接可以连续交换数据。总之,使用异步任务的原因如下:
- 这项任务只需要几秒钟
- 该任务由用户直接启动,例如通过
按钮
- 用户通过
ProgressBar
或其他指示器接收进度反馈
以及使用线程的原因:
- 任务需要很长时间才能执行,或者没有预定义的终端,例如,服务器正在侦听连接
- 任务在后台运行,用户不知道
- 任务独立于
UI
运行,只需最少的反馈
你必须决定使用哪个选项,两者都有优点和缺点。但是你的问题听起来像是一个线索
可能对你更有用。如果您还有其他问题,请随时提问