使用方法:服务或线程

时间:2011-05-04 20:56:52

标签: android multithreading web-services

我正在开发一个Android应用程序,它每隔n分钟从/向Web服务获取/上传数据。此上载/下载仅在应用程序运行时完成。但这可能会在未来发生变化。

下载新数据时,我不会更新UI。只有当用户在当前屏幕上时(应用程序有多个活动)才会更新UI

我的问题是解决这个问题的最佳方法是什么。 我不认为服务是正确的方法,因为它听起来像是一种矫枉过正(在目前的情况下)。 AlarmManager可以是一个选项。 在服务中运行线程是一个选项..像this这样的东西。

任何指针/建议都会很棒。 感谢

4 个答案:

答案 0 :(得分:5)

我在我的活动中使用AsyncTask向.net网络服务询问一些信息,它的工作原理和易用性。

  

AsyncTask可以正确,轻松地使用UI线程。该类允许执行后台操作并在UI线程上发布结果,而无需操纵线程和/或处理程序。

答案 1 :(得分:1)

嗯,在这种情况下,由于应用程序在此期间已经运行,要么运行良好,但可以从应用程序内的任何位置调用服务,这样我就可以在线程上使用该服务。

如果你想创建只用于说Main.java的线程,那么线程可以正常工作,这些是我能看到的唯一真正有所作为的东西,它们真的很漂亮关闭,在这种情况下既没有给出明确的“正确”答案,但我会选择服务

答案 2 :(得分:0)

只需在上传/下载完成后广播一条消息,然后让接收方启动该服务,然后让该服务自行停止。你完成了。

如果您不打算在服务器上轮询新信息或其他任何内容,则应该这样做。这种方法主要是一次更新,解释,完成。并等到下一次更新。主要针对大多数情况下流式传输......但取决于您获得的内容。

答案 3 :(得分:0)

我认为你注意到的所有方法都可行。就我个人而言:

  1. 使用AlarmManager唤醒下载服务。显示活动时启动它,当隐藏活动时停止它。

  2. 下载服务应该是短暂的:启动它以进行上传/下载,然后将其关闭。

  3. 如果下载服务确实获得了一些新数据,它会发送一个Activity监听的广播。