Java Android网络客户端实现

Java Android网络客户端实现,java,android,android-asynctask,client,runnable,Java,Android,Android Asynctask,Client,Runnable,我正在编写一个将RTSP流式传输到服务器的应用程序。对于“NetworkOnMainThreadException”,我需要在单独的线程上执行所有网络通信。我知道AsyncTask是在单独的线程上执行网络操作的一种简化方式。但是,它的接口也受到限制(主任务和异步任务之间的通信)。而且,从逻辑上讲,它似乎不应该用于长时间运行的任务 有一个线程可运行的备份选项。它更加灵活和复杂 使用AsyncTask实现客户端有意义吗?还是我应该坚持线程可运行?对于长时间运行的操作,您应该使用线程。AsyncTas

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

有一个线程可运行的备份选项。它更加灵活和复杂


使用AsyncTask实现客户端有意义吗?还是我应该坚持线程可运行?

对于长时间运行的操作,您应该使用
线程。
AsyncTask
是短任务的最佳选择,短任务只需几秒钟,由用户直接启动。
AsyncTask
的一个用例是按需从web服务加载数据。
线程
的一个用例是某个服务器和客户端之间的一个长时间运行的连接,通过该连接可以连续交换数据。总之,使用
异步任务的原因如下:

  • 这项任务只需要几秒钟
  • 该任务由用户直接启动,例如通过
    按钮
  • 用户通过
    ProgressBar
    或其他指示器接收进度反馈
以及使用
线程的原因:

  • 任务需要很长时间才能执行,或者没有预定义的终端,例如,服务器正在侦听连接
  • 任务在后台运行,用户不知道
  • 任务独立于
    UI
    运行,只需最少的反馈
你必须决定使用哪个选项,两者都有优点和缺点。但是你的问题听起来像是一个
线索
可能对你更有用。如果您还有其他问题,请随时提问