AsyncTask主要是作为运行定义良好的计算或任务的解决方案。经典示例是作为AsyncTask的下载程序,它通过URL提供URL,将其进度更新到UI,并在完成时退出。是否有一种合理的(不太苛刻的)方式在AsyncTask运行时添加/更改输入?也许设置一个AsyncTask必须处理的项目队列,然后从主应用程序改变该队列......?那会“打破”AsyncTask模型吗?
答案 0 :(得分:2)
是的,你可以。 AsyncTask是一个已经在UI线程的通信机制中添加的线程。但是,此通信仅从AsyncTask
到UI
,而不是您需要的反向。
此外,在多个API版本中,Android中的最大同时AsyncTask
数为1。
要实现从UI
到AsyncTask
的线程安全通信,您需要使用Handler
或BlockingQueue
类。
就个人而言,我不会这样做。我会直接使用Thread
和Handler
或BlockingQueue
。
问候。
答案 1 :(得分:2)
是的,您可以通过从您的活动管理的同步集合中获取doInBackground()方法中的对象来完成此操作。