2011-11-29 123 views
0

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

或者哪个是完成此操作的最佳方法?

+0

您的代码好吗? – ingsaurabh

+0

这是很多代码花花公子,我只是想知道哪个是最好的方式来完成这个和使用什么。我使用的代码工作正常,但问题是,据我所知,asynctask的生命周期取决于活动的生命周期,线程也有点类似。如果你能为我提供一种方法来获得,如果一个线程正在运行,然后获得完成的时间,并完成一些事情,我会很高兴,但这个问题的想法是获得最好的建议这样做的方法。 –

+1

你应该可以通过'AsyncTask'来做到这一点 – Caner

回答

1

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

所以工作流程是这样的:

  • 恢复活动
  • 获得singletoin实例的情况下,
  • 开始下载未激活/必要显示出下载
  • 更新界面过程 。 ..
  • 收到通知广播和更新UI

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