2017-11-18 65 views
-3

我正在構建一個簡單的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(); 

每次我運行我的應用程序只有getJSON()方法調用和停止。任何建議?

+0

請把日誌放在這裏 – diegoveloper

回答

0

我認爲你需要使用AsyncTask。在doInBackground塊中放置getJson(),並在onPostExecute塊中放置parseJSON()。希望這個幫助。

-1

Android不建議使用sleep(5000)來延遲。使用處理程序來執行此操作請參閱Handler的documentation

例如,在你的代碼,

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

還包含用於獲取網頁JSON,建議使用Asynctask使UI響應。 Asynctask的最佳教程是here

相關問題