0

我对锁定有点生疏,我正在尝试在我的 android 应用程序上进行简单的网络通信。不用说,你必须AsyncTask在android中使用来做这些通信。如何锁定主线程直到AsyncTask完成?

public int read(){
    ReadTCPTask t = new ReadTCPTask();
    boolean canGoOn = false;
    // We can proceed once we acquire the lock?
    while (!canGoOn)
        canGoOn = lock.tryLock();
    t.execute();
    // something that will wait here until the asynctask is done?
    return readSize;
}
4

2 回答 2

3

IMO 最简单的方法是声明AsyncTask并存储对它的引用:

MyTask task = new MyTask();
task.execute();

然后你希望它阻塞直到AsyncTask完成调用:

task.get();

而已!

虽然,阻塞主线程可能不是你想要的方式。更常见的做法是AsyncTask在主线程完成时使用回调来更新主线程。

于 2013-04-30T18:36:05.993 回答
0

我相信的主要目的AsyncTask不是阻塞主线程。AsyncTask旨在使 UI 和非 UI 线程之间的通信更容易。所以,如果你想阻塞 UI 线程,你可以只写语句Activity本身。

于 2013-04-30T18:48:42.710 回答