【发布时间】:2014-08-10 11:25:16
【问题描述】:
在我的初始屏幕中,我向我的服务器发送了两个不同的请求,我想等待结果然后解析它们,然后转到我的主要活动。我正在使用 volley,我想在 mThread 中解析两个结果,在确保我成功拥有我需要的所有内容之后,我调用 startActivity 和....所以我的问题是如何将两个不同的可运行对象发送到 mThread 或者如何我将我的字符串响应发送到我的 mThread 以解析它,并在最后一次可运行或消息调用另一个活动之后。还有我怎么能在最后调用完成方法?我考虑过这个选项,但一无所获:
使用处理程序,但是如果我想使用处理程序,因为您知道每个处理程序都分配给创建它的线程,因此在 onCreate 方法中创建处理程序是错误的,因为如果没有收到请求,我想让我的线程进入睡眠状态然而,也不想在主线程上做我的计算。
我不知道如何解决的代码是:
protected void onCreate(Bundle savedInstanceState) {
// ....
mThread = new Thread(){
@Override
public void run() {
super.run();
Log.i("Recieved String",response);
if( two runnable completed){
Intent i = new Intent(WelcomeActivity.this, MainActivity.class);
startActivity(i);
how to call finish()?
}
}
};
//...
MyVolleyRequest Request1 = new MyVolleyRequest(URL1,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// sending response to mThread
// or sending runnable to mThread
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError ex) {
}
});
MyVolleyRequest Request2 = new MyVolleyRequest(URL2,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// sending response to mThread
// or sending runnable to mThread
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError ex) {
}
});
SingletonRequestQueue.getInstance(SplashActivity.this).addToRequestQueue(Request1);
SingletonRequestQueue.getInstance(SplashActivity.this).addToRequestQueue(Request2);
我将不胜感激任何实用且干净的解决方案!
【问题讨论】:
标签: java android multithreading android-asynctask android-handler