我的应用程序中有两个AsyncTask,MyClientTask和CloseSocket。 MyClientTask是连接到服务器并输出服务器在textview中发送的任何内容以及通知,我按下一个连接按钮并向服务器发送消息。它工作正常。 现在,对于CloseSocket,我想要一个停止连接的断开按钮。它的设置方式与连接按钮完全相同。它当然是一个不同的AsyncTask,但它永远不会被调用。没有错误。当我声明按钮以查看其设置是否正确时,我放了一个简单的System.out。我在“doInBackground”中也有一个System.out,它会告诉我它是否被调用,但它没有。我有
socket.close(), socket.getInputStream().close(), socket.getOutputStream().close()
关闭套接字,但没关系,因为从不调用CloseSocket AsyncTask。
此外,服务器每10秒钟对应用程序进行一次ping操作以进行测试,所以我不知道这是否与它有关。
答案 0 :(得分:3)
从Honeycomb开始,AsyncTasks默认串行运行,而不是并行运行。你需要告诉它在ThreadPoolExecutor上运行。
if (Build.VERSION.SDK_INT >= 11) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
task.execute();
}