-1

我有一个关于在 android 上构建基于 UDP 的聊天客户端的学校作业。现在,我的第一个想法是创建一个启动服务的活动,该服务处理所有的网络,活动的所有输入和输出。却发现了一个问题。

如果我尝试启动服务以便 startCommand 函数启动并调用 socket.receive 以开始接收网络消息,我无法绑定服务以便我可以将输入从活动传递到服务(输入 = 用户的消息想发送)。它只是挂起并引发 ANR 异常。如果我只绑定它(这样接收永远不会被调用),它就像一个魅力。

也许我没有正确解决这个问题。还是应该在阻塞接收呼叫时绑定服务?

4

1 回答 1

1

我曾经做过这样的事情。我获取了追踪另一台设备所需的必要数据并将其输入到一个 asyncTask 中,在那里我启动了一个 Runnable,它基本上在后台保持连接。(这样你就不必担心绑定)我发现使用 Apache MinaNetty而不是让您自己的套接字连接更容易。(无需重新发明轮子)。如果您只是将后台运行的会话中的数据传输传递给 List 或 Queue,并让 asyncTask 检查它并相应地更新 UI,那么您应该准备好聊天了。也许这不是最好的方法,但它对我有用。希望有些帮助。

于 2012-02-24T03:04:13.210 回答