Android中activity与service的通信问题,绑定service不能用!pass掉

现在我的问题是,我开发的是一个socket聊天程序,现在要求将我的一个连接client放到service中运行,
而这个client是在登录的时候就实例化的一个对象,这个对象中有很多方法,包括发送和接收各种消息和命令!
将activity与client分开进行,绑定这个肯定不行了,在很多个页面都用到了,不可能每个页面都绑定,
况且我现在只在登录成功以后启动了service,我打算用一个全局的静态变量,然后在各个地方都能调用到这个对象,这样子有什么问题吗?
哪位大神有没有更好的方法?广播不太想用,感觉不太好!

3个回答

如果你的设计中服务时单独的进程那这种只能绑定,,而且这种是做聊天应用的普遍做法,好处多多,但是你非要说绑定麻烦那你就只做成同一个进程的本地服务了,
这样只需要注册回调就可以了。
至于你说的全局静态变量很不推荐,一是很多地方使用更改以后出了问题根本没办法找到错误尤其是多线程操作情况,并且跨进程这全局静态变量也是没办法跨进程访问的

hehui1860
小小豆豆浆 回复_hay: 广播的话没有太多需要注意的地方,最好是在你界面APP中只设置一个广播接收器,不要每个界面都注册,这样系统的广播分发开销会小一些
接近 4 年之前 回复
helf19920825
helinfengg 感谢的你解答,因为很多逻辑都不是在activity中操作的,所以我如果用绑定的话估计就会改动很多地方了,我打算还是用广播通信了,广播有哪些需要注意的吗?
接近 4 年之前 回复

可以使用activity+fragment来处理。activity只需要一个,来管理界面,fragment承载各个业务界面。
这样你的service就和这唯一的activity绑定就可以了。

不想binder,也不想广播,就只有消息了。可以试试HandlerThread,通过消息发送和处理。把client放到线程中。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!