第二个AsyncTask永远不会被调用

时间:2014-11-20 16:56:48

标签: android sockets android-asynctask

我的应用程序中有两个AsyncTask,MyClientTask和CloseSocket。 MyClientTask是连接到服务器并输出服务器在textview中发送的任何内容以及通知,我按下一个连接按钮并向服务器发送消息。它工作正常。 现在,对于CloseSocket,我想要一个停止连接的断开按钮。它的设置方式与连接按钮完全相同。它当然是一个不同的AsyncTask,但它永远不会被调用。没有错误。当我声明按钮以查看其设置是否正确时,我放了一个简单的System.out。我在“doInBackground”中也有一个System.out,它会告诉我它是否被调用,但它没有。我有

 socket.close(), socket.getInputStream().close(), socket.getOutputStream().close()

关闭套接字,但没关系,因为从不调用CloseSocket AsyncTask。

此外,服务器每10秒钟对应用程序进行一次ping操作以进行测试,所以我不知道这是否与它有关。

1 个答案:

答案 0 :(得分:3)

从Honeycomb开始,AsyncTasks默认串行运行,而不是并行运行。你需要告诉它在ThreadPoolExecutor上运行。

if (Build.VERSION.SDK_INT >= 11) {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
    task.execute();
}