【问题标题】:Pass different responses from server in different Activities在不同的活动中传递来自服务器的不同响应
【发布时间】:2016-07-25 04:37:12
【问题描述】:

我正在尝试创建 Android 应用程序,该应用程序将为所有活动使用多个活动和一个套接字。我知道我应该使用Service,它将包含将连接到服务器的套接字。每个Activity 都会对服务器使用一些特定的请求(例如,第一个 Activity 可以加载用户,第二个可以向他们发送消息)。那么如何在活动之间导航来自服务器的响应(例如,用户列表将被传递到第一个 Activity,消息将被加载到第二个 Activity)?

【问题讨论】:

    标签: java android sockets android-activity android-service


    【解决方案1】:

    正如您所说,您正在使用Service 从服务器加载数据,在获取数据后,您可以根据您触发LocalBroadcast 的响应类型来处理响应,并使用动态BroadcastReceiver 在活动中接收它

    查看LocalBrodcast的教程

    【讨论】:

    • 谢谢,我会检查这个解决方案,但我想澄清一下:所以,我会将套接字存储在服​​务中,该服务将与应用程序的实例绑定。所有活动都将在应用程序中调用 get 方法,该方法将返回服务。但是,如果我的 Activity 会在绑定之前请求服务怎么办?我该如何预防?也许你可以建议一些更好的方法来做这件事?
    • 但是如果我的 Activity 会在绑定之前请求服务呢?我不明白你到底想说什么?
    • 我的意思是如果我的 Activity 会在绑定服务之前尝试调用服务中的方法。例如。我启动应用程序,在该应用程序启动应用程序和 Activity 之后,在 Application::onCreate() 我有 bindService(),在 Activity::onCreate() 我有 service = ((AppCore) this.getApplication()).getService(); 但如果服务仍未绑定,那么我将在service.
    • 为此您可以尝试在 0r mili sec 后获取服务,等待使用Handler。逻辑主要是这样的if(service!=null ){ //do work}else{// wait for 2 sec again try }
    • 我想过,但这看起来不是最好的解决方案……也许这种使用套接字的方式可以使用另一种架构来完成?
    【解决方案2】:

    您的服务可以成为您的活动的路由器。通过特定的响应(将其映射到 switch-case id),它将启动正确的 Activity。已启动的 Activity 可以绑定到 Service 进行聊天。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2015-10-18
    相关资源
    最近更新 更多