实现这一目标的最佳方式是什么.我有一个Android应用程序将使用我的python服务器允许两轮手机之间的通信.轮次意味着他们在圆形开始之前不能互相交谈,一旦他们发送消息,他们就不能发送另一个消息,直到另一个人响应然后开始新一轮.
我以为我会使用IntentService,但服务器不断启动和停止似乎是错误的,我不必担心asynctask的问题,或者是处理它的最佳方法.我怎么能有一个应该接收和发送消息到客户端的服务,似乎服务更多的方式是什么?
fed*_*aol 17
意图服务不再是由意图触发的工作线程,在单独的线程中执行它们的操作然后关闭.它们旨在启动和停止.
如果您需要执行诸如http get之类的内容,或者在任何情况下不需要保持与服务器连接的交互,请使用intent服务并使用广播事件通知您的活动.
如果你的应用程序需要与服务器保持连接(即永久tcp连接),我的方法是使用asynctask或托管在其中的更经典的线程来执行网络服务(不是意图)服务.然后,您可以使用bindToService()使活动与服务交互.
我建议不要在活动中使用asynctasks.如果水平/垂直视图发生变化,您将面临丢失服务器响应的风险,如他在回复中所述.
据我了解,您的问题属于工作队列模型(生产者-消费者模型)类型。Intentservices 就是为了做到这一点。当且仅当您需要进行多线程处理时,您才应该使用服务。您可以使用 IBinder 接口与 Activity 和 Service 进行通信。
Asynctask 只是一个专门的线程,以便您可以轻松地更新您的 UI。但对于你的情况 IntentService 似乎是最好的选择。
| 归档时间: |
|
| 查看次数: |
5713 次 |
| 最近记录: |