【发布时间】:2015-12-18 09:03:46
【问题描述】:
我希望 AsyncTask 等到它完成。所以我写了下面的代码,我使用 .get() 方法如下,代码如下所示
mATDisableBT = new ATDisableBT();
但在运行时,.get() 不会强制 ATDisableBT 等待,因为在 logcat 中我收到了从 ATDisableBT 和 ATEnableBT 发出的混合顺序的消息 这意味着 ATDisableBT 上的 .get() 并没有强迫它等待
如何强制AsyncTask等待
代码:
//preparatory step 1
if (this.mBTAdapter.isEnabled()) {
mATDisableBT = new ATDisableBT();
try {
mATDisableBT.execute().get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
//enable BT.
this.mATEnableBT = new ATEnableBT();
this.mATEnableBT.execute();
【问题讨论】:
-
如果你想让 AsyncTask 阻塞,为什么还要使用它?
-
@Fildor 请告诉我在这种情况下你推荐什么
-
很难推荐一些东西。 sn-p 有点脱离上下文。启用/禁用 BT 听起来像“蓝牙”......所以这看起来你正在尝试禁用和启用蓝牙,无论出于何种原因。对吗?
-
@Fildor yes..correct
-
纠正我,如果我是仪式与否。你想先执行
mATDisableBT然后完成mATDisableBT你想执行mATEnableBT??如果是这样的话,那就很容易了
标签: android asynchronous android-asynctask