Android服务/异步任务/线程

时间:2011-11-29 07:54:24

标签: android service android-asynctask

我有一点建议,我想在我的应用程序中完成一件事。我希望我的应用程序每次启动时都能通过互联网同步一些数据,我的想法是我有一个自定义操作栏,其中包含一个圆形进度条,我希望在我下载数据时运行进度条,并在我下载时停止运行下载结束了。我希望在我的tabhost中的所有活动中执行此操作(我的应用程序中有2个,我想在主要文件中执行此操作)。我已经尝试使用threadasync task,但如果我更改活动并返回,则进度条不会旋转,与线程相同。我错过了什么,或者我也应该尝试服务。

或者哪种方法可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

你必须照顾活动生命周期。假设您为所有活动下载相同的数据(就像我在游戏中使用高分更新一样),最好的方式(我能够提供)是产生单独的线程,但只有一次(我使用单例对象做)这个,所以我不会开始下载两次)。当下载准备就绪时,它会触发意图,以便活动可以知道并正确更新UI。

所以工作流程是这样的:

  • 恢复活动
  • 获取单一实例
  • 如果不活跃/必要,则开始下载
  • 更新界面显示下载正在进行中 ...
  • 接收notofication广播和更新UI

我也可以将此代码重复用于广播接收器,因此我可以安排高分的定期更新(即使此时游戏不活跃)