【发布时间】:2015-04-03 07:49:48
【问题描述】:
解释我要做什么:
我的应用程序连接到蓝牙打印机并打印一些数据。 这是在 AsyncTask 中完成的(我们称之为 asyncPrint),以便用户可以同时正常使用应用程序。
asyncPrint 准备数据并将其提供给打印机。现在要准备数据,调用另一个 asyncTask(我们称之为 asyncData)连接到 Web 服务以获取一些数据。因为在打印之前我需要数据,所以我这样称呼它:
String a = ws.get();
这样打印会一直等到 asyncData 完成。
但是如果互联网连接速度很慢,这可能需要 30 秒,所以我想要做的是,如果我等待 5 秒,应该绕过 asyncData 而不是停止或取消,并且打印应该在没有来自互联网的数据的情况下进行。
asyncData 仍应完成,因为它在完成后还会将一些数据保存到数据库中。
任何想法如何使这成为可能?
【问题讨论】:
-
您需要服务和异步任务,而不仅仅是异步任务。 IntentService 两者都做,使用它。当您使用它时,请使用 SyncAdapter 来同步您的数据。如果你卡在某个地方,请开始编写一些代码并将其发布在此处。您已经知道要做什么,诀窍就是开始编写代码。如果最初并不完美,请不要担心。
-
你想做什么?想要取消的任务,如果你取消它,它就会停止执行。
-
@BhavdipPathar 我不想取消它,如果 ws.get() 在那段时间内没有完成,只需等待 5 秒钟,然后不取消就通过它。
-
@StephanBranczyk 我会检查intentService,但你能否更具体地告诉我应该如何实现,我可以等待异步完成一段时间,如果它没有完成则绕过它?跨度>