解决方案 »

  1.   

    不建议这么做,如此说来,你的socket这个应该由第三方的类来管理,然后在这两个类中都可以访问,应该更好
      

  2.   

    您好,我是android初学者,我想在Activity连接Socket,然后传递给Service,又Service管理,请问具体怎么用Intent把Socket传递给Service,在Parcelable接口中,
    31.    public static final Parcelable.Creator<T> CREATOR = new Creator<T>() {  
    32.        public T createFromParcel(Parcel source) {  
              //这里要用source.readValue(ClassLoader)把Socket对象提出来
    36.            return T;  
    37.        }  
    38.  
    39.        public T[] newArray(int size) {  
    40.            return new T[size];  
    41.        }  
    42.    };  
    上面代码中提出Socket对象的地方这么写呢?
      

  3.   

    您好,我是android初学者,我想在Activity连接Socket,然后传递给Service,又Service管理,请问具体怎么用Intent把Socket传递给Service,在Parcelable接口中,
    31.    public static final Parcelable.Creator<T> CREATOR = new Creator<T>() {  
    32.        public T createFromParcel(Parcel source) {  
              //这里要用source.readValue(ClassLoader)把Socket对象提出来
    36.            return T;  
    37.        }  
    38.  
    39.        public T[] newArray(int size) {  
    40.            return new T[size];  
    41.        }  
    42.    };  
    上面代码中提出Socket对象的地方这么写呢?
    你让service开放出来一个连接socket的接口不就好了,有Activity绑定service以后调用这个接口来连接socket不就好了
      

  4.   

    ls正解,Activity与Service通信间接达到使用socket的目的
      

  5.   

    Socket没有实现Parcelable接口,无法传递的。
    因为这是跨进程的通信,你无法将Socket对象写到Parcel里去,所以Binder也无从通过Parcel构建Socket对象。
    还有通过跨进程传递的对象,通常不是同一个对象,因为地址空间不一样。
    但好像Binder可以实现是同一个对象,这个我也不大清楚,我理解的是对共享内存做内存映射时,可以实现传递的是同一个对象的功能。即在服务器端访问的地址和客户端访问的地址是同一段地址。
    但是Socket是无法写到Parcel里面去的,你不知道按什么顺序去读取数据,按什么方式进行字节对齐等。