我已经阅读了许多关于这个主题的类似帖子,但没有一个对我有帮助。
我有一个 AsynkTask 类,它的工作执行得很好,但由于某种原因,onPostExecute 方法永远不会执行。
这是我正在使用的代码:
public class MyPublicClass
{
private class MonitorAudioTask extends AsyncTask<Void, Void, ParseResult>
{
@Override
protected ParseResult doInBackground(Void... params)
{
// set variables
ParseResult result = null;
// do stuff
return result;
}
@Override
protected void onPostExecute(ParseResult result)
{
if (result != null)
{
// deal with result
}
//Now start the task again
_task = new MonitorAudioTask();
_task.execute(null, null, null);
}
}
}
同样,doInBackground 方法运行良好。我已经在它的最后(就在 return 语句之前)完成了日志记录,以证明它运行正常。
ParseResult 类非常简单,也被证明可以正常工作。
我已经证明 onPostExecute 没有通过在该方法的第一行进行圆顶调试日志记录来执行。
任何建议都会受到欢迎,因为我现在正猛烈抨击我的脑袋,却一无所获。
谢谢。
编辑:
我还应该提到,我从以前的开发人员那里接手了这个应用程序的开发。而这个应用程序曾经可以正常工作。它工作和不工作之间发生了两件事:1)我对从 doInBackground() 方法中调用的函数进行了一些小的调整。2)看起来以前的开发人员正在开发旧版本的 ADT(JellyBean 4.1.2),而我已经安装了最新版本:4.3。
再次感谢您的帮助。
更新:我刚刚更新了我的 ADT 以拥有 4.1.2 SDK,因此我可以在以前的程序员使用的相同版本上进行开发。我再次进行了测试,几乎同样的事情发生了。唯一的区别是最终我收到了来自应用程序的“应用程序没有响应”消息。所以看起来 doInBackground() 正在返回它的输出,但这有点让应用程序崩溃。这有助于解释发生在我身上的事情吗?
更新:我刚刚运行了另一个,我将所有调试调用都移到了 onProgress() 方法中。我想确保我的调试代码不会妨碍我。有趣的结果:没有进行任何调试调用。所以看起来 onProgress 和 onPostExecute 都没有被执行。