今天我有一个考试,必须交付一些数据库数据到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获得数据库响应并发送到您的手机->您的手机接收数据
您可以使用Json或XML进行数据传输(为了简单起见,首选Json)
根据android wiki, "AsyncTask"不被弃用!
您需要使用TCP/UDP协议创建状态全连接,两者都实现scoket编程,然后您将能够将数据传递给android客户端。其他的工作是使用谷歌消息(GCM)通过GCM你可以发送数据到你的安卓应用程序。或者您可以使用Open fire进行套接字编程。