将消息发布到服务器的设计建议

时间:2011-09-20 20:39:07

标签: android

我正在设计一个需要定期更新服务器的应用程序,但我不确定如何发送这些更新。

这就是我想要做的事:
当我的Activity启动时,我必须向服务器发送初始连接消息。建立连接后,我将每秒向服务器发送一条新消息。当用户执行服务器需要知道的某些操作时,该消息将被添加到队列中。每隔一秒左右,我的应用程序就会检查队列中是否有要发送的消息。如果有可用,则发送。如果队列为空,则应发送简单的Keep Alive消息以维持连接。

我的问题是,对我来说最好的策略是什么?我应该使用单独的线程吗?还是服务?还是AsyncTasks?

  

到目前为止我的想法:连接不需要保持过去   活动的生命周期,所以在我看来,服务会   太过分了。

我应该如何处理安排更新?我应该使用带有Looper的MessageQueue吗?还是ScheduledExecutorService?还是处理程序?

  

到目前为止我的想法:       我的理解是MessageQueue阻塞直到它收到一个   要发送的消息。       我不确定这是我想要的。我的计划只是发送Keep   活着的消息       当队列为空时,在新消息到达之前不阻塞。

我对这类东西完全陌生,所以我可能会以完全错误的方式解决这个问题。我很高兴听到你能提供任何建议。

2 个答案:

答案 0 :(得分:1)

我会使用一个单独的线程与一个睡眠语句(或等效的android)...保持它尽可能简单是你的预期时间和应用程序不打算无人值守执行的事实

答案 1 :(得分:1)

一些注意事项:

  1. 请记住用户:确保这不会产生太多流量。您应该在应用未激活时取消通信。

  2. 当手机进入睡眠状态时,无法进行网络通信。

  3. 您不应该在UI线程上发送/接收数据。你说的一切都还可以:后台线程,服务和AsyncTask。

  4. 如果您只有一个Activity要更新,那么请使用AsyncTask,因为它是最简单的。当Activity恢复时,通知comm任务停止。

  5. 如果您需要更新不同的活动,请使用服务。服务应在收到某些数据时发送广播,感兴趣的活动可以注册这些事件。这是优雅的,因为只有活动(在前台)活动接收广播。