AsyncTask更好的通信协议



今天我有一个考试,必须交付一些数据库数据到Android应用程序,我创建了套接字协议,我用来调用服务器与AsyncTask类交付我特定的域请求的数据。但是我的老师告诉我AsyncTask类已经过时了,还有另一种方法可以解决这个问题。你能告诉我如何在不使用AsyncTask类,域类和套接字通信的情况下解决问题吗?

谢谢

AsyncTask并没有过时(也没有被弃用),但它可能不是持久套接字通信的好选择。AsyncTask更适合于相对较短的操作,包括那些修改UI以显示进度或完成的操作,因为线程是为您处理的。因为您可以使用AsyncTask来修改UI,大多数人将AsyncTask与他们的Activity或一些View联系在一起,这可能是一个问题,因为任何配置更改都可能导致Activity被破坏并重新创建,但是您仍然会有一个AsyncTask生活在内存中,保持整个Activity上下文。

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

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

创建自己的服务器API,像这样进行通信:

  • 话机向web API发送http请求-> web API接收请求,处理并调用数据库

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

您可以使用JsonXML进行数据传输(为了简单起见,首选Json)

根据android wiki, "AsyncTask"不被弃用!

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

最新更新