本文原创,转载请说明出处http://blog.csdn.net/adroitly/article/details/37914197
最近在做socket的通信,在Android上用socket来传输数据,多个聊天界面中要用到一个socket流来接受消息和发送消息。
但是Android的activity不像java中的类传递,activity之间传递数据不能通过new对象方式,所以socket就不能new了,然后你会想socket可以通过intent传递,我也想是的,但是这样的话要序列化对象,并且要继承Parcelable或者Serializable,具体如何实现传递和接收可以看我的这篇http://blog.csdn.net/adroitly/article/details/32694267文章,但是自己水平低下,序列化的时候总是new一个对象初始化,嗯,可以传递了,可以用了,但是这样的缺点就是你跳转页面就要连接一次,麻烦。
然后我就想要不我去弄个service来共享它的流,嗯,这重也可以,不过我就没去试了,我觉得这样浪费内存。
最后我用的是自定义application来共享数据。这个比较好(个人认为),因为我的做法是socket的所有工作都在里面做了,包括如何开启线程进行消息接收,发送。然后我把接收到的消息存放在一个list对象,以后我哪个activity需要去访问接收到的消息我就去监听list有没有变化就行了,变化我就取出来,这样我就可以很好的控制socket流了!不过这样需要在Manifest文件里面声明:<span style="font-size:14px;"><application
android:name=".MyApplication"//自定义application
....
/></span>
其实还有另外的方法的,用广播也行(本人广播不怎么会用,不会接收广播)所以也没做,或者开个数据库,把消息全部传进数据库,每次访问数据库也行(你觉得你的手机够牛你就这样做吧)
最后奉上我的socket通信的用application的一个demo,有点挫。
地址:http://download.csdn.net/detail/adroitly/7647339