问题描述
- Android中activity与service的通信问题,绑定service不能用!pass掉
-
现在我的问题是,我开发的是一个socket聊天程序,现在要求将我的一个连接client放到service中运行,
而这个client是在登录的时候就实例化的一个对象,这个对象中有很多方法,包括发送和接收各种消息和命令!
将activity与client分开进行,绑定这个肯定不行了,在很多个页面都用到了,不可能每个页面都绑定,
况且我现在只在登录成功以后启动了service,我打算用一个全局的静态变量,然后在各个地方都能调用到这个对象,这样子有什么问题吗?
哪位大神有没有更好的方法?广播不太想用,感觉不太好!
解决方案
如果你的设计中服务时单独的进程那这种只能绑定,,而且这种是做聊天应用的普遍做法,好处多多,但是你非要说绑定麻烦那你就只做成同一个进程的本地服务了,
这样只需要注册回调就可以了。
至于你说的全局静态变量很不推荐,一是很多地方使用更改以后出了问题根本没办法找到错误尤其是多线程操作情况,并且跨进程这全局静态变量也是没办法跨进程访问的
解决方案二:
Android:Service的绑定和解绑定,Service与Activity通信
android 将Service绑定到Activity
Android -- 跨应用绑定service并通信
解决方案三:
可以使用activity+fragment来处理。activity只需要一个,来管理界面,fragment承载各个业务界面。
这样你的service就和这唯一的activity绑定就可以了。
解决方案四:
不想binder,也不想广播,就只有消息了。可以试试HandlerThread,通过消息发送和处理。把client放到线程中。
时间: 2024-09-13 03:45:14