我正在构建一个简单的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()方法调用并停止。任何建议?
答案 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。