完成AsyncTask后未调用onPostExecute

mle*_*vit 36 java android android-asynctask

出于某种原因onPostExecute(),我的AsyncTask完成后没有打电话给我.

我的课程取消:

public class setWallpaperForeground extends AsyncTask<String, Integer, Boolean>

我的onPostExecute():

protected void onPostExecute(Boolean result)

一切正常,我doInBackground()成功完成并返回一个布尔值,然后它就完成了.

谢谢

Kon*_*rov 53

你用execute()方法开始任务了吗?的onPostExecute,如果你只是调用将无法运行doInBackground.


Rom*_*Guy 48

您是否在UI线程上创建了AsyncTask?还要在onPostExecute()方法上添加@Override annotaiton,以确保正确声明它.

  • 您不必拥有@Override,但这是确保您正确覆盖该方法的一种方法. (8认同)

tri*_*ner 30

发现/犯了另一个令人讨厌的错误:

如果你的params onPostExecute(Param param)与你定义的那个不匹配extends AsyncTask<...,...,Param>而你没有使用@Override注释,它将永远不会被执行,你也不会收到来自Eclipse的警告.

自己注意:只需总是使用@Override注释,Eclipse将帮助您.

另一种避免所有命名错误的简单方法:

在Eclipse中: Right-click in code > Source > Override/Implement Methods

  • 我刚刚在这里解决了我同事的问题 - 他使用的是布尔值而不是布尔值! (2认同)

Had*_*sky 5

在遇到同样的问题并且这些答案都没有帮助我之后,我发现我的 UI 线程被阻塞了(我使用了 a CountDownLatch.await()),因此onPostExecute()应该由 UI 线程调用的方法从未被调用过。