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