Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何每2秒(一次又一次)从URL加载文件?_Java_Android - Fatal编程技术网

Java 如何每2秒(一次又一次)从URL加载文件?

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);

如何每2秒(一次又一次)从URL加载文件?我需要关闭连接还是保持连接(我用此代码加载一次)?我需要在某个地方使用synchronized吗

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秒下载一次?也许解释一下你想做什么。