【发布时间】:2016-07-04 11:09:00
【问题描述】:
我正在开发一个 android 项目,需要通过 URL 连接到服务器并发送和获取消息。这些方法位于一个名为 Server Connection 的类中。现在我需要在主活动中调用这些方法,但显然我们不能在主线程上进行网络操作。所以我的问题是,当我在服务器连接类中有几个单独的方法时,如何使用 AsyncTask 来做到这一点。下面提供了sn-ps的代码。
服务器连接类:
public class ServerConnection implements Connection{
JSONParser jsonParser = new JSONParser();
ArrayList<Message> messages = new ArrayList<Message>();
JSONObject jsonObject = new JSONObject();
/**
* Constructor
*/
// public ServerConnection() {
// getMessages();
// }
@Override
/**
* gets a set of Messages in form of an ArrayList and pushs it to the Server
*/
public void shareMessage(ArrayList<Message> messages){
this.messages = messages;
jsonObject = jsonParser.parseMessagetoJSON(messages);
//JSONArray share = new JSONArray();
//share.put(jsonObject);
URL url = null;
HttpURLConnection client = null;
try {
url = new URL("URL goes here");
client = (HttpURLConnection) url.openConnection();
client.setRequestMethod("POST");
client.connect();
Log.d("MSG", "Connection Successful");
client.setRequestProperty("Key","Value");
client.setDoOutput(true);
client.setChunkedStreamingMode(0);
OutputStreamWriter out = new OutputStreamWriter(client.getOutputStream());
.......
.......
}
}
//requests the server for Messages and shares them with the Messanger
public void getMessages(){
try{
URL obj = new URL("URL goes in here");
HttpURLConnection conn = null;
conn = (HttpURLConnection) obj.openConnection();
conn.setRequestMethod("GET");
conn.connect();
.......
.......
}
}
}
同样还有另一种 get 方法可以从服务器获取更多数据。现在我需要以某种方式给他们打电话。如何使用 AsyncTask 完成此操作,或者有更简单的方法。
【问题讨论】:
-
我建议研究 Volley,应该会让你的生活更轻松
-
我认为你可以使用 Volley 来有效地处理请求响应。另一件事异步任务与活动生命周期无关。所以它可能会产生几个运行时问题。
-
你为什么不尝试改造。它非常棒,比 http 调用快 7 倍
-
使用 AsyncTasks 有什么问题?
标签: java android android-asynctask get httpurlconnection