异步任务 - 不清楚重新调用方法

时间:2011-07-29 10:04:55

标签: android

我有一个包含异步任务的服务类。在doInBackground和onPostExecute中,我调用服务类中但在异步任务之外的一些方法。当调用这些方法时,它们仍然位于Async任务创建的线程中,因此不会干扰主UI。

为了说明我缺乏理解,我应该尝试将服务类所做的几乎所有内容都放入Async任务中。例如,服务作为警报的结果启动,并且在onStartCommand中设置重复警报(这是Reto Meire的地震示例)并创建数据库。将这两个操作的代码移动到Async任务的onPreExecute部分是否有意义?

2 个答案:

答案 0 :(得分:0)

无需这样做..请确保您要在后台运行的方法是从doInBavkground()调用的..其余的你可以放入postExecute ....你的代码片段想要在backGround任务应该在PostExecute()之后运行。如果您从doInBackground()调用方法,它们仍然在后台线程上运行..无论它们在哪里...如果您从onPostExecute()调用它,那么它将在其他线程上运行,其中可以进行更改在你的显示器中...就像显示对话框等...

答案 1 :(得分:0)

您应该始终将尽可能多的工作卸载到后台线程/任务。应该在doInBackground方法中完成数据库创建之类的操作。 onPreExecuteonPostExecute方法在UI线程上运行,通常用于通知用户后台活动(例如使用ProgressDialog)。

根据经验,我建议使用后台服务,如果你可以逃脱它。如果您使用一个,您应该知道如何正确清理它,因为用户通常会对在后台运行的应用程序感到恼火。