gpt4 book ai didi

java - 确保异步线程在 ui 线程上运行

转载 作者:行者123 更新时间:2023-12-01 23:52:32 24 4
gpt4 key购买 nike

我有需要将异步任务作为内部方法运行的对象(不在 ui 线程上),我想将 ui 线程传递给该方法,然后以这种方式在 asynctask 上实现 ui 线程 - 有没有办法这样做吗?

伪代码:

      public class EditDetails extends Activity{          
MyObject obj = new obj;
obj.syncWithServer(EditDetails.this);
}

public class MyObject {
public void syncWithWerver(EditDetails parent){
final class GetUserHttpTask extends AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {
@Override
protected String doInBackground(String... params) {
return "";
}
@Override
protected String onPostExecute(String result) {
//this doesn't run
}
}
}
}

注意:目前这不起作用,因为 onPostExecute 不会在 doInBackground 之后触发

编辑

此代码是伪代码,实际问题仍在发生,我已将其列出 http://pastebin.com/jW6JpUbg here ..基本上它在pastebin上运行第72行后就卡住了,永远不会onPostExecute

最佳答案

够奇怪的onPostExecute应该是void。我想知道当您更改了重写方法的返回类型时,您的代码编译情况如何?

更正 onPostExecute 后,您可以按如下方式运行 AsyncTask:

final class GetUserHttpTask extends AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {
@Override
protected String doInBackground(String... params) {
return "";
}
@Override
protected String onPostExecute(String result) {
// this will run
}
}
public void syncWithWerver(EditDetails parent){
AsyncTask task = new GetUserHttpTask();
task.execute();
}

关于java - 确保异步线程在 ui 线程上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146055/

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