AsyncTask更好的通信协议

时间:2016-06-23 23:44:08

标签: java android rest sockets android-asynctask

今天我参加了一个必须向Android应用程序提供一些数据库数据的考试,我创建了套接字协议,我曾经用AsyncTask类调用服务器来向我提供特定于域的请求数据。但是我的老师告诉我,AsyncTask类已经过时,还有另一种解决问题的方法。你能否告诉我在不使用AsyncTask类,域类和soket通信的情况下解决问题的方法。

由于

3 个答案:

答案 0 :(得分:1)

AsyncTask不会过时(也不会弃用),但它可能不是持久套接字通信的好选择。 AsyncTask更适合于相对短期的操作,包括那些进行UI修改以显示进度或完成操作的操作,因为为您处理了线程。由于您可以使用AsyncTask修改用户界面,因此大多数人会将AsyncTask与其Activity或部分View相关联,这可能是一个问题,因为任何配置更改可能导致Activity被销毁并重新创建,但您仍然会有一个AsyncTask生活在记忆中,并保留整个Activity背景。

对于类似持久套接字的东西,最好使用Service,这是一个单独的应用程序组件,不会像Activity那样进行配置更改。您还可以以不同方式管理其生命周期,而Activity生命周期主要由用户交互决定。

答案 1 :(得分:0)

您可以使用一些http请求库,例如“Volley”或“OkHttp”(我最喜欢的)

创建您自己的服务器API以进行如下通信:

  • 手机向网络API发送http请求 - > Web API接收请求,处理并调用数据库

  • 数据库响应并将数据发送到Web API - > Web API获取数据库响应并发送到您的手机 - >您的手机会收到数据

您可以使用 Json XML 进行数据传输(为简单起见,请选择Prefer Json)

根据android wiki,“AsyncTask”并未弃用!

答案 2 :(得分:0)

您需要使用TCP / UDP协议创建状态完全连接,两者都实现scoket编程然后您将能够将数据传递到Android客户端。其他解决方法是通过GCM使用Google消息(GCM),您可以将数据发送到您的Android应用程序。或者您可以使用Open fire进行套接字编程。