【发布时间】:2020-03-22 02:30:30
【问题描述】:
您好,我目前正在 android studio 中为一个学校项目开发一个消息传递应用程序。
我正在使用套接字让客户端与服务器通信,我知道您不应该在 UI 线程中调用网络方法,因此为了解决这个问题,我正在使用 asynctask 我创建了 asynctask 类来创建套接字,然后通过它发送数据,但我无法恢复数据,因为我正在努力寻找一种方法将数据从 asynctask 中取出并返回到 UI 线程。
我尝试使用 onpostexecute 在用于套接字相关方法(和 asynctask 类)的类中设置全局变量,然后使用 getter 方法在 UI 线程中读取它,但 UI 线程速度很快并在设置之前读取它,我不想设置一个计时器来让 UI 线程等待这个变量被设置,因为这首先破坏了使用 asynctask 的意义。
我希望这里的某个人可以为我指明如何做到这一点的正确方向,使用 asynctask 只是错误的方式吗?如果是这样,我应该如何在 android 中实现套接字。
感谢您的阅读,感谢您的宝贵时间:)
旁注:我正在使用 datainputstream 和 .readUTF 通过套接字接收数据。
【问题讨论】:
-
您好,欢迎来到stackoverflow,请在stackoverflow.com/help/how-to-ask查看这篇关于提问的文章,然后通过添加代码来编辑您的问题。
-
using onpostexecute to set a global variable。不要那样做。您应该对 onPostExecute() 中接收到的数据进行所有工作。只需调用您已经拥有的功能。或者,如果您没有单独的函数,则将相关代码放入函数中并在 onPostExecute() 中调用这些函数。你的问题没问题。确实不需要发布代码。不接触 ui 的代码可以从 doInBackground() 中调用。
标签: java android sockets android-asynctask