gpt4 book ai didi

java - 依次执行异步任务

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

我知道已经有一些讨论,并且我在互联网上搜索了很多解决方案,我有 3 个 get 调用( Volley ),我想一个接一个地执行,因为下一个 get 确实需要在在此之前得到,但它似乎在这里不起作用。当我调试整个过程时,它当然工作得很好,但是当正常运行应用程序时,它不会获得任何我在调试它时会获得的数据。

现在我尝试设置静态 boolean 变量来使整个事情正常工作,但到目前为止还没有成功..

public class AsyncToken extends AsyncTask<String , Void, Void> {

private PacketBuilder pb = new PacketBuilder();
private Context context;
AsyncUser u = new AsyncUser(context);

@Override
protected Void doInBackground(String... params) {

while( task1finished == false )
{
try
{
Log.d("App", "Waiting for GetTask");
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}

Log.d("App", "GetTask finished");
// Do what ever you like
// ...
pb.Get("token", "", params[0], context);

return null;
}

protected void onPostExecute(String ... params)
{
task2finished = true;

}

public AsyncToken(Context context)
{
this.context = context;
}

}

编辑,代码: Code where i start the first asynctask, in the end i check if the object i should have gotten with get is there, if yes, i start another activity

first asynctask

last asynchtask

最佳答案

当异步任务完成时,onPostExecute() 被调用,因此使用计算值启动另一个异步任务。您可以拥有应该计算的全局变量,也可以通过参数传递它们。

//start first async task
new TaskOne().execute();


class TaskOne extends AsyncTask<Void,Void,String>{
String tmp;


@Override
protected String doInBackground(Void... records) {
tmp = computeNeededValue();

return tmp;
}

@Override
protected void onPostExecute(String result) {
new TaskTwo().execute(tmp);
}
)

class TaskTwo extends AsyncTask<String,Void,Void>{

@Override
protected Void doInBackground(String... records) {
//use computed value from first task here
}

@Override
protected void onPostExecute(Void result) {
//start another async task
}
)

关于java - 依次执行异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46806538/

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