背景
我有一个AsyncTask(称之为uploadHeader
),它将一些数据上传到服务器。
我有第二个上传一些相关数据的AsyncTask(uploadDetail
),这需要上传初始数据:标题上传返回服务器发出的id,用于在上传之前更新本地详细记录。
如果在最初调用uploadHeader
时存在连接问题,则不会上传标题信息。所以在uploadDetail.doInBackground()
开始时,我检查本地标题记录的状态,看看它是否已经成功上传到服务器,如果没有,请调用uploadHeader.get()
上传标题并等待获取id,然后再上传详细记录。
问题
它似乎挂在get()调用。调试它,它似乎是创建一个FutureTask
然后循环在其中的某个地方。看起来好像第二个AsyncTask在第一个AsyncTask完成后排队等待运行,它从未在第二个AsyncTask等待。
我已经阅读了一些关于从另一个调用一个AsyncTask的其他帖子/文章,但它们似乎都专注于让两个并行运行。我希望这个阻止,直到另一个任务完成。还有人提到“必须在UI线程上调用execute(Params ...)。”,没有一篇文章提到get()。或者get()基本上与execute()相同,等待结果?
作为一种解决方法,我可以将http调用上传到一个单独的类中,并从uploadHeader
和uploadDetail
调用它,因此uploadDetail
不需要创建uploadHeader
任务。我只是想明白为什么它不能正常工作。