gpt4 book ai didi

java - 将 diffrenet runnables 或消息传递到 android 中的单个预定义线程

转载 作者:行者123 更新时间:2023-12-02 05:33:51 25 4
gpt4 key购买 nike

在我的启动屏幕中,我向服务器发送两个不同的请求,我想等待结果然后解析它们,然后转到我的主要 Activity 。我正在使用 volley,我想解析 mThread 中的两个结果,在确保我成功拥有我需要的所有结果后,我调用 startActivity 并......所以我的问题是如何将两个不同的可运行对象发送到 mThread 或者如何我将字符串响应发送到我的 mThread 来解析它,并在最后一个可运行或消息调用另一个 Activity 之后。最后我如何调用完成方法?我考虑过这个选项,但无济于事:

使用处理程序,但是如果我想使用处理程序,正如您所知,每个处理程序都会分配给创建它的线程,因此在 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);

我将不胜感激任何实用且干净的解决方案!!

最佳答案

您可以使用Executor Framework,用它您可以创建一个包含一个线程的线程池。线程将等待任务(Runnables)执行。并将一一处决。

private ExecutorService executorService;    
executorService = Executors.newSingleThreadExecutor();

以这种方式发送任务:

executorService.execute(new YourRunnable());

如果您想同时执行多个任务,您还可以使用 Executors.newFixedThreadPool(n) 创建一个 n 大小的线程池。或者,如果您需要返回值,请提交Callable。这里有一点introduction

还有GuavaLibrary实现任务完成时调用的回调。

关于java - 将 diffrenet runnables 或消息传递到 android 中的单个预定义线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com