gpt4 book ai didi

java - AsyncTask "onPostExecute"永远不会被调用

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

我搜索了所有具有几乎相同问题的帖子,但找不到任何有用的内容:\

我创建了一个自己的接口(interface)来在我的 MainActivity 中实现“TaskListener”。我的想法是在 AsyncTask 完成后在主线程中运行 onTaskComplete() 方法。

我的界面:

public interface TaskListener {
void onTaskComplete();
}

我的主要 Activity :

public class MainActivity extends Activity implements TaskListener{
private MyAsyncTask myAsyncTask;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

myAsyncTask = new MyAsyncTask(this);
//Some other stuff here
}

private void aMethod(){
myAsyncTask.execute(aString);//aString is of course defined
}

public void onTaskComplete(){
MyClass tmpMyObject = null;
try{
tmpMyObject = myAsyncTask.get();
}
catch(Exception e){
//...
}
}
}

MyAsyncTask:

public class MyAsyncTask extends AsyncTask<String, Void, MyClass>{
private TaskListener taskListener;

public MyAsyncTask(TaskListener taskListener){
this.taskListener = taskListener;
}

protected MyClass doInBackground(String... aString){
//Some code here
MyClass myObject = new MyClass();
return myObject;
}

@Override
protected void onPostExecute(MyClass myObject){
taskListener.onTaskComplete();
}
}

如果我运行我的应用程序,它会在 doInBackground() 返回 myObject,但 onPostExecute() 永远不会被调用。所以我在 MainActivity 中尝试了一些类似的事情:

private void aMethod(){
MyClass myObject = myAsyncTask.execute()
.get();
}

使用此代码,将调用 onPostExecute()。但这样我的主线程必须等待异步线程完成..

非常感谢

最佳答案

你能解释一下为什么你认为你的 onPostExecute 没有被调用吗?

我一直用这个,从来没有遇到过任何问题。尝试以下方法。

@Override
protected void onPostExecute(MyClass myObject) {
super.onPostExecute(myObject);
// LOG some message or put a break point to see if you get called
taskListener.onTaskComplete(myObject);
}

更改您的界面以接受 MyClass 作为参数。

 public void onTaskComplete(MyClass myObject){
// Do whatever you need to do with myObject
// LOG some message or put a break point to see if you get called

}

关于java - AsyncTask "onPostExecute"永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918912/

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