0

简而言之,我正在编写一个视频聊天应用程序,它应该可以连接两部 Android 手机。到目前为止,我已经设法协商客户端之间的交互,直到我到达我应该在客户端之间进行视频(以及后来的音频)数据流传输的部分。

问题如下:

我正在尝试实现一个服务,一旦一个人决定联系某人,就会从一个 ChatActivity 开始,这将在两个客户端之间协商流式传输,使套接字和数据在它们之间传输完全独立于发生的事件在 ChatActivity 中,除了对话结束的那一刻,活动终止的那一刻,以及随之而来的服务。

但是,我担心的是,如果服务在会话中终止套接字,我就会遇到必须在客户端和客户端之间重新协商流的问题。可能很明显,我对 android 服务的了解充其量是有限的,欢迎任何关于该主题的建议

我的问题是:

  • 创建一个服务是否可行,该服务将阻止由于外部影响导致的意外崩溃,保持这样的连接处于活动状态并运行,而不管显示流中视频的活动 (ChatActivity) 被销毁和创建多少次?
  • 我应该为此使用绑定服务还是启动服务,还是两者的混合?
  • 如果我以某种方式从服务创建一对可用的视频数据流,一个通过互联网连接另一个通过摄像头,我是否能够将它们发送回活动,并继续将它们重新连接到组件,无论多少次它们在生命周期中被销毁和创建?
  • 尽管我努力了,但我还没有找到任何类似的例子,如果有人遇到过类似的套接字/服务杂耍的代码,我将非常感谢指导。
4

1 回答 1

0

创建一个服务是否可行,该服务将阻止由于外部影响导致的意外崩溃,保持这样的连接处于活动状态并运行,而不管显示流中视频的活动 (ChatActivity) 被销毁和创建多少次?

Service如果通过 开始,startService()则生命周期独立于任何活动的生命周期。活动可以来来去去,但服务可以持续一段时间。

我应该为此使用绑定服务还是启动服务,还是两者的混合?

startService()如果您打算在Service没有任何活动的情况下跑步,您将需要使用。

如果我以某种方式从服务创建一对可用的视频数据流,一个通过互联网连接另一个通过摄像头,我是否能够将它们发送回活动,并继续将它们重新连接到组件,无论多少次它们在生命周期中被销毁和创建?

如果没有完整描述“一对可用的视频数据流”的含义,我无法回答。

话虽如此,您可能需要考虑像 Square 的 Otto 或 greenrobot 的 EventBus 这样的事件总线,因为它们都支持 UI 层即时接收事件(例如,服务只是建立通信)并按需检索最后发送的事件(例如,活动需要重新连接到最后一个流)。

于 2013-09-28T21:27:56.610 回答