我想知道以下案例的最佳做法是什么:
我需要在我的Android客户端中继续打开一个套接字,该套接字侦听从服务器获取的消息并通过Toast消息通知用户。
我的第一个想法是使用单例并存储我用来与服务器通信的客户端:
这样我就可以使用以下方式发送消息:
MySingletonHere.getInstance().sendMessage("message");
我可能遇到的一个问题是当套接字收到传入消息时,在活动中做了一些事情。
处理它的一种方法是在Activity中使用:
MySingletonHere.getInstance().setMessageHandler(new MessageHandler() {
public String handleMessage(String m) {
Toast.make ...
}
});
我想问的是,这是否被认为是一个“好”的解决方案,因为它不像一个人。可能有一个Android组件可以处理这种情况。我对Android开发知之甚少,但如果我理解正确,服务应该能够执行这样的事情吗?
由于
答案 0 :(得分:0)
如果这些消息仅在关注消息的唯一活动位于前台时才重要,只需让活动处理套接字本身。
除此之外,你还需要一项服务,因为Android会以其他方式摆脱你的过程。只要服务运行的时间相当短,或者非常明显地在用户的控制之下(并且你也使用startForeground()
),这将有效。