【发布时间】:2014-01-23 20:18:52
【问题描述】:
我有一个应用程序使用 JSON 定期(固定时间间隔,20 秒)从服务器请求数据。
我当前的实现包括在 async 任务中包含一个循环,并具有 20 秒的“睡眠”条件。然而,这似乎不是一个好的实现。我的问题是有没有更好的实现。还有一种从主线程强制停止异步任务的好方法吗?
另一种选择是更改代码,让客户端发送一个请求并让服务器让服务器循环返回答案。这是一个更好的实施方式,提前谢谢你:)
protected String doInBackground(String... args) {
String RegistrartionID = RegisID();
while (true){
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("Start_Term", args[0]));
params.add(new BasicNameValuePair("Dest_Term", args[1]));
params.add(new BasicNameValuePair("RegistrartionID",
RegistrartionID));
Log.i("Start_Term", args[0]);
Log.i("Dest_Term", args[1]);
Log.i("RegistrartionID", RegistrartionID);
JSONObject json = jsonParser.makeHttpRequest(
URL_SEND_CHOSEN_TERMINALS, "POST", params);
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
【问题讨论】:
-
如果没有从循环内部中断,您将无法停止 while (true) 循环。
标签: android multithreading android-asynctask