在Activity A上启动查询并在Activity B上处理结果

时间:2016-10-08 20:19:17

标签: android

我想要做的是开始查看活动A(让我们说,使用volley' stringRequest),同时启动活动B,以及查询'结果将在活动B上处理(让我们说,将其打印在textview上)。怎么能实现这一目标?现在我只在活动A上处理了所有事情。

即。如果我在活动B的onCreate上有一些繁重的操作,我希望能够至少在后台运行API回调以节省时间。

我知道这是" onResponse发生之间的竞赛"并且"活动B准备好了,问题是,我如何克服这场比赛?

这是我在活动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);
}

3 个答案:

答案 0 :(得分: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);
            }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用广播接收器Example

当你从服务器得到响应然后在第二个活动中发送广播和注册接收者