Java 如何每2秒(一次又一次)从URL加载文件?
如何每2秒(一次又一次)从URL加载文件?我需要关闭连接还是保持连接(我用此代码加载一次)?我需要在某个地方使用synchronized吗Java 如何每2秒(一次又一次)从URL加载文件?,java,android,Java,Android,如何每2秒(一次又一次)从URL加载文件?我需要关闭连接还是保持连接(我用此代码加载一次)?我需要在某个地方使用synchronized吗 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView txt=(TextView)this.findViewById(R.id.lbl);
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView txt=(TextView)this.findViewById(R.id.lbl);
try {
URL url = new URL("http://10.0.2.2/test/dynamic/test.json");
URLConnection urlconnection = url.openConnection();
long l = urlconnection.getContentLength();
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String line;
StringBuffer buffer=new StringBuffer();
while ((line = in.readLine()) != null)
{
buffer.append(line);
}
in.close();
System.out.println("bufer="+buffer.toString());
txt.setText(buffer.toString());
Object obj = JSONValue.parse(buffer.toString());
JSONArray array = (JSONArray) obj;
for(Object o:array){
JSONObject element_json = (JSONObject)o;
int id=Integer.parseInt(""+element_json.get("id"));
int type=Integer.parseInt(""+element_json.get("type"));
int device_type=Integer.parseInt(""+element_json.get("device_type"));
}
} catch (Exception exc) {
exc.printStackTrace();
}
}
我想你可以用a反复阅读文件。(请参阅sendMessageDelayed方法)。您应该使用。如果你这样做的话,你会得到“应用程序没有响应”错误,因为你阻塞了UI线程。任何长时间运行的操作(例如,从云中获取某些东西)都应该在后台完成。asynctask完成后,可以在onPostExecute方法中安排另一次运行
另外,我建议使用库中的,因为它提供了一个更为开发人员(和新手)友好的AsyncTask版本。您只是在更新远程json文件时尝试同步数据吗?为什么要每2秒下载一次?也许解释一下你想做什么。