【问题标题】:Asynchronous HTTP response Android异步 HTTP 响应 Android
【发布时间】:2013-09-18 16:40:52
【问题描述】:

我正在尝试执行以下操作,并正在研究其他人的经历:

我希望有一个在 Android 上运行的 HTTP 服务器,它接收来自客户端的 GET 请求。从那里,服务器必须将查询参数传递给Service,该Service 将进行一些处理(有时非常繁重)。服务完成后,它会将数据发送回服务器,然后服务器将返回响应。

当然,startService(intent) 调用是异步的,所以我想知道如何告诉服务器在发回响应之前等待处理完成。目前,进程间消息传递是通过MessengerMessage 类完成的。

什么样的设计才能做到这一点?

【问题讨论】:

    标签: android http asynchronous service android-service


    【解决方案1】:

    对返回的IBinder 对象使用绑定服务(实现onBind() 的服务)和transact 调用。或者编写自己的 AIDL 来描述服务的同步接口。

    您希望在应用启动时绑定到您的服务,在 HTTP 请求开始之前,因为绑定操作本身是异步的。

    顺便说一句,为什么功能必须在服务中?如果服务在同一个应用程序中,是否可以将其直接移动到 HTTP 服务器类?

    【讨论】:

    • 感谢您的出色回答,我也打算调查 AIDL。功能不能在服务器中,因为我可能需要将意图分派给一堆不同的服务。什么是事务调用?
    • 一旦你通过Context.bindService()连接到一个服务,你会得到一个IBinder对象。 IBinder has a method transact()`.
    • 您会建议在每次 HTTP 请求时从服务中解除绑定还是保持连接打开?
    • 如果服务在同一个应用程序中 - 否。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    相关资源
    最近更新 更多