android – 来自非ui线程的Asynctask

是否必须从UI线程启动和执行asyctask.如果我从非ui线程使用asynctask进行web服务访问(长时间运行),这是正确的.

抱歉,如果我的查询错误.

在我的应用程序中,我必须运行大约10个web服务,并且必须在ui上显示结果.我很困惑哪种方法将是好的asynctask,intentservice或为每个webservice调用创建线程并使其并行运行.

最佳答案 AsyncTask必须遵循一些线程规则才能正常工作:

>必须在UI线程上加载AsyncTask类.这是从JELLY_BEAN开始自动完成的.
>必须在UI线程上创建任务实例.
必须在UI线程上调用> execute(Params …).
>不要手动调用onPreExecute(),onPostExecute(Result),doInBackground(Params …),onProgressUpdate(Progress …).
>该任务只能执行一次(如果尝试第二次执行,则会抛出异常.)

Further Details

在我个人看来,我建议使用AsyncTask,因为它针对运行后台任务进行了高度优化,并利用了多核处理器等优势.

点赞