从另一个类/服务调用AsyncTask方法(回调?)

时间:2010-06-01 07:30:20

标签: android callback android-asynctask

我想知道是否可以从另一个类和/或服务调用AsynTask类中定义的特定方法? 在我的具体情况下,我有一个服务播放一些声音,但声音是从具有可用声音的列表中选择的......

当选择声音时,它会从我的家庭服务器下载,这需要一些时间(不多,让我们说在3-4秒左右,声音/效果的大小不大)...... 所以我现在的问题是我有一个服务来播放这些声音,当我选择一个我想要显示progressdialog时......方式(如果我理解正确)是使用AsyncTask,但唯一的事情是AsyncTask会告诉我的服务从我的服务器播放一个特定的声音...所以没有从服务到Asynctask的“回调”...

我怎样才能实现这一目标? 如何调用正在运行的AsyncTask,它位于另一个类中,并告诉他所有工作都已完成,因此他可以停止显示ProgressDialog? 或者我是否过度设计它还有其他方法吗? 提前谢谢......

2 个答案:

答案 0 :(得分:0)

我会为每次下载使用一个asyncTask。下载工作在doInBackground方法中完成。您可以覆盖onPostExecute方法来完成下载声音后应该完成的所有工作。在你的情况下,我认为这将隐藏progressdialog并告诉播放服务新音乐可用。

有关AsyncTask的更多信息,请查看android documentation

答案 1 :(得分:0)

实际上,我认为你想要的是相反的。 AsyncTask应该用于执行长时间运行的过程,而不是显示进度对话框。实际上,您不应该使用任务的后台进程来访问UI的任何部分。那么你要做的是显示一个对话框,启动你的任务,然后让任务在其onPostExecute方法中解除对话框,这可以操纵UI组件。