2017-10-18 15 views
0

私はすでにいくつかの議論があることを知っています。私はインターネット上で解決策をたくさん探しています。次のgetが必要なので、私は3つのコール(ボレー)この前に取得された変数はここでは機能していないようです。私はプロセス全体をデバッグするときに正常に動作しましたが、通常はアプリケーションを実行すると、デバッグ時に得られるデータは得られません。非同期タスクを1つずつ実行する

は、今私は..

public class AsyncToken extends AsyncTask<String , Void, Void> { 

private PacketBuilder pb = new PacketBuilder(); 
private Context context; 
AsyncUser u = new AsyncUser(context); 

@Override 
protected Void doInBackground(String... params) { 

    while(task1finished == false) 
    { 
     try 
     { 
      Log.d("App", "Waiting for GetTask"); 
      Thread.sleep(1000); 
     } 
     catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    Log.d("App", "GetTask finished"); 
    // Do what ever you like 
    // ... 
    pb.Get("token", "", params[0], context); 

    return null; 
} 

protected void onPostExecute(String ... params) 
{ 
    task2finished = true; 

} 

public AsyncToken(Context context) 
{ 
    this.context = context; 
} 

} 

EDITを、この全体のことを動作させるために、静的なブール変数を設定しようとしましたが、これまでのところ成功をtheresの、コード: Code where i start the first asynctask, in the end i check if the object i should have gotten with get is there, if yes, i start another activity

first asynctask

last asynchtask

答えて

2

非同期タスクが完了したときonPostExecute()そこでは計算された値を持つ別の非同期タスクを開始します。あなたは、計算すべきものをグローバル変数にすることもできますし、それらをパラメータで渡すこともできます。

//start first async task 
new TaskOne().execute(); 


class TaskOne extends AsyncTask<Void,Void,String>{ 
    String tmp; 


    @Override 
    protected String doInBackground(Void... records) { 
     tmp = computeNeededValue(); 

     return tmp; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     new TaskTwo().execute(tmp); 
    } 
) 

class TaskTwo extends AsyncTask<String,Void,Void>{ 

    @Override 
    protected Void doInBackground(String... records) { 
     //use computed value from first task here 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     //start another async task 
    } 
) 
+0

私はイムこのエラーを取得して、何も、このソリューションを試していない、これは私がチェック作業を行う場合は私が手から得た変数が設定されたかどうかを確認する:仮想メソッドを呼び出そうと「はjava.lang.String型組織。 json.JSONObject.getString(java.lang.String) 'をnullオブジェクト参照に追加します。そして、私は間違ってデバッグしているか、onPostExecuteにジャンプしません。 @AlexandraK。 –

+0

あなたはそのコードを投稿できますか? –

+0

それを編集しました。最初のタスクは最初のタスクの実行です。すべてのタスクが終了した後で、getでオブジェクトを取得した後もチェックします。新しいアクティビティを開始する場合は2番目のピクチャが最初のタスク、仕事。 –

関連する問題