模式使AsyncTask"程序化"

Hei*_*upp 8 android android-asynctask

我在很多地方使用AsyncTask没有问题.

现在使用Honeycomb,所有网络I/O都需要与UI线程分开,在很多情况下需要AsyncTasks,在同步网络连接非常适合之前(Honeycomb将为任何网络抛出异常)/o在主/ ui线程上).

现在我基本上想要得到类似的东西Object result = MyAsyncTask().execute()吗?

我发现AsyncTask Android - 设计模式和返回值是有意义的,也是GWT做事的方式,但不知怎的,这听起来像是在尾巴上摇着狗(然后它可能只是我的大脑需要更多的扭曲).

Tyl*_*ier 13

对.你很亲密 尝试

Object result = MyAsyncTask().execute().get();
Run Code Online (Sandbox Code Playgroud)

  • 只是为了思考和其他人绊倒这个答案,从UI线程调用execute().get()几乎与在UI线程上运行操作相同.虽然这可以避免在主线程上引发网络调用的异常,但它不会避免操作的含义.您的UI线程将阻塞,直到网络操作完成.您可能通过使用postExecute方法导致死锁,因为该方法将等待主线程变为可用.恕我直言,你正在呈现AsyncTasks的反模式. (7认同)