2017-11-18 16 views
-3

私は簡単なAndroidアプリケーションを構築しています。私はJSONを解析したい。私はボタンを使ってすべての作業をしています。しかし、私はボタンを使わずにそれを呼びたい。まずURLからJSONを取得して解析する必要があります。私は関数getJson()とparseJSON()を持っています。最初に、getJSONを呼び出す前に、5秒後にparseJSON()を呼び出します。私のコードは次のとおりです:2つのメソッドを1つずつ呼び出すにはどうすればいいですか?

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()メソッドを呼び出して停止します。どんなsuggetions?

+0

ここにログを入れてください – diegoveloper

答えて

0

私はAsyncTaskを使用する必要があると思います。 doInBackgroundブロックにgetJson()を、onPostExecuteブロックにparseJSON()を入れてください。この助けを願う。

-1

Androidでは、遅延のためにsleep(5000)を使用することを推奨していません。これを行うにはハンドラを使用してください。 Handlerのdocumentationを参照してください。あなたのコードでたとえば

、ウェブからJSONを取得するためのも

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

は、UIが応答するためにAsynctaskを使用することが提案されています。 Asynctaskのベストチュートリアルはhereです。

関連する問題