2016-10-08 6 views
-2

私は、アクティビティA(つまり、ボレーのstringRequestを使用して)をクエリし、同時にアクティビティBを開始し、アクティビティB上で処理されるクエリの結果(テキストビュー上に出力する)これはどのように達成できますか?現在、アクティビティAですべての処理が行われているだけです。アクティビティAのクエリを開始し、アクティビティBの結果を処理します

つまり、アクティビティBのonCreateに重い操作がある場合、少なくともバックグラウンドでAPIコールバックを実行して時間を節約できます。

私はこれが "onResponse起こっている"と "Activity B is ready"の間の競争だと理解しています。質問は、この競争をどのように克服するのですか?

ここでのアクティビティAに私のコードです -

@Override 
public void onClick(View view) 
{ 
    String url = "https://myapp.mydomain.com/this/is/my/query"; 

    // Request a string response from the provided URL. 
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
      new Response.Listener<String>() 
      { 
       @Override 
       public void onResponse(String response) { 
        String text = "Response is: "+ response; 
        Snackbar.make(mMainLayout, text, Snackbar.LENGTH_SHORT).show(); 
       } 
      }, 

      new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       String text = error.getMessage(); 
       Snackbar.make(mMainLayout, text, Snackbar.LENGTH_SHORT).show(); 
      } 
    }); 

    // Add the request to the RequestQueue. 
    RequestHandler.getInstance(this).addToRequestQueue(stringRequest); 
} 
+0

は、なぜあなたは最初の場所でActivityBからのAPI呼び出しを開始しませんか?応答がActivityBで処理される場合は、それ自体がAPIを呼び出すようにしてください –

+0

@FarhadFaghihiそれは私が欲しいものではありません。もし私がBアクティビティのonCreateに重い操作をしたら、少なくともAPIコールバックはバックグラウンドで実行され、時間を節約します。 – Cookienator

答えて

0

はあなたがonResponse

public void onResponse(String response) { 
       String text = "Response is: "+ response; 
       Snackbar.make(mMainLayout, text, Snackbar.LENGTH_SHORT).show(); 
I=new Intent(Main.this,second.class); 
i.putExtra("stringname", response); 
      } 
+0

これは私の望むものではありません。私は、アクティビティBのonCreateに重い操作がある場合、時間を節約するために少なくともバックグラウンドでAPIコールバックを実行できるようにしたいと考えています。 – Cookienator

+0

また、onResponseでsharedpreferencesを試してから、それを2番目のアクティビティで取得することもできます。 –

+0

まだ助けられません。結果が返される前にアクティビティBからsharedpreferencesにアクセスしようとするとどうなりますか? – Cookienator

0

内の2番目の活動を開始しようとすることができますActivityA

@Override 
       public void onResponse(String response) { 
        String text = "Response is: "+ response; 
        Snackbar.make(mMainLayout, text, Snackbar.LENGTH_SHORT).show(); 

       Intent i=new Intent(ActivityA.this,ActivityB.class); 
       i.putExtra("result",text); 
        startActivity(i); 
       } 

ActivityB

String result=getIntent().getExtras().getString("result"); 
//Handle response here 
個の
+0

それは私が欲しいものではありません。私がBアクティビティのonCreateに重い操作をした場合、少なくともバックグラウンドでAPIコールバックを実行して時間を節約できるようにしたいと考えています。 – Cookienator

0

利用ブロードキャストレシーバExample

あなたはサーバーからの応答を取得すると、次に第二の活動に放送して登録するレシーバを送る

+0

それは動作するかどうか? –

関連する問題