Android线程/服务问题

时间:2011-07-19 20:03:27

标签: android

我正在研究应用程序的想法,并希望真正了解线程和服务在我的应用程序中将扮演什么角色。在一个非常简单的应用程序中,我希望每周从某种数据库更新一次列表视图。棒球场100项。因此,据我所知,到目前为止,我将有一个活动,其中包含一个由列表视图组成的UI。然后我会有一个服务。在这个服务中我将有一个帖子,这个帖子将负责下载。该服务仅用于确保在应用暂停或停止时下载可以继续。然后我可以使用消息/ runnable / asyncTask将此数据从我的线程发送到我的activity / UI。我是否正确地想到了这一点?

2 个答案:

答案 0 :(得分:0)

我认为你错过了BroasdCastReceiver:

  

我希望每周更新一次列表视图

对于此任务,您需要安装警报。警报通常启动广播接收器,以确保手机没有睡眠。此BroadcastReceiver必须启动您的服务。我知道这听起来很复杂,但实施起来还不错:)

以下是我对其余问题的评论:

  

我将有一个活动,其中包含一个由列表视图组成的UI

正确

  

然后我会有一项服务。在这个服务中,我将有一个帖子,这个帖子将负责下载。

多数民众赞成也是正确的。

  

然后我可以使用消息/ runnable / asyncTask将这些数据从我的线程发送到我的activity / UI。

这可能会失败,因为您的服务不知道主要活动是否正在运行。什么是将列表数据写入共享文件,服务和活动都可以访问?

答案 1 :(得分:0)

如果您的应用程序真的如您所描述的那么简单,那么您可以在没有任何服务甚至线程的情况下执行此操作。

  1. 您需要一个带有ListView的Activity才能显示您的内容;这是必须的
  2. 您需要向互联网发出请求并获取您的数据。如果您在没有其他线程的情况下实现此部分,您的UI将被阻止,并且可能导致Android操作系统终止您的应用,但如果您可以在5秒内返回您的内容则不会。所以在这种情况下,线程变成了可选项。
  3. 如果您决定使用另一个线程来加载数据,则不需要服务来托管该线程。由于您每周只检查一次远程服务,因此只需在启动“活动”时轮询远程服务。

    我认为使用服务加载数据会使应用程序变得更加复杂。