私は、アクティビティ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);
}
は、なぜあなたは最初の場所でActivityBからのAPI呼び出しを開始しませんか?応答がActivityBで処理される場合は、それ自体がAPIを呼び出すようにしてください –
@FarhadFaghihiそれは私が欲しいものではありません。もし私がBアクティビティのonCreateに重い操作をしたら、少なくともAPIコールバックはバックグラウンドで実行され、時間を節約します。 – Cookienator