如何一个接一个地调用两个方法?

时间:2017-11-18 01:40:06

标签: android json

我正在构建一个简单的Android应用程序。我想解析JSON。我有一切都在使用Button。但我想在不使用Button的情况下调用它。它需要首先从url获取JSON,然后解析它。我有函数getJson()和parseJSON()。首先,我希望调用getJSON,并在5秒后调用parseJSON()。这是我的代码:

Runnable[] methods = new Runnable[]{
            new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(SheduleActivity.this, "This is gettin JSON", Toast.LENGTH_LONG).show();
                    getJSON();

                }
            },
            new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(SheduleActivity.this, "This is Parsing JSON", Toast.LENGTH_LONG).show();
                    parseJSON();


                }
            }

    };

    for(Runnable r : methods)
        //r.run();
       service.submit(r);
   service.shutdown();
    while (!service.isTerminated()) {}
    Toast.makeText(SheduleActivity.this,"Finished all threads", Toast.LENGTH_LONG).show();

每次我运行我的app时,只有getJSON()方法调用并停止。任何建议?

2 个答案:

答案 0 :(得分:0)

我认为您需要使用AsyncTask。将getJson()放在doInBackground块中,将parseJSON()放在onPostExecute块上。希望这个帮助。

答案 1 :(得分:-1)

Android建议不要将sleep(5000)用于延迟。使用handler来执行此操作。请参阅Handler的documentation

例如,在您的代码中,

Handler handler = new Handler( /* --- */ );
handler.postDelayed(methods[i], 5000);

另外,为了从网上获取json,建议使用Asynctask来使UI响应。 Asynctask的最佳教程是here