我程序需要四个activity 其中有三个都需要和网络连接接收数据和发送数据,我想让主页面登陆网络,其他三个activity直接使用这个socket,我想用service 完成网络,但是应该如何做呢。
这是我另一个帖子,
http://topic.csdn.net/u/20110516/12/c48515a5-ed90-4d44-910d-e3490b07216f.html?98293

解决方案 »

  1.   

    把Socket 封装一下,放到一个singleton类中,一个地方初始化,各个地方就都能用了
      

  2.   

    把socket封装到一个单例线程中,并提供getter和setter方法,然后就可以在各个activity中调用得到socket对象了
      

  3.   

    你要补充java设计模式的知识啊!单例模式是最容易理解的,设计模式花点时间很知道
      

  4.   

    有三种方式可以解决楼主的问题1:单例模式,即我的应用程序总共就只有一个这个类的实例2:静态  你写一个类FatherConnect,这个类中有一个静态变量socket,一个静态方法对他进行初始化,然后在你需要的地方都应用这个类中的socket  这样可以保证所有的socket都是本socket,并且只有一个。3:第三种方式是这样的,利用每个android应用程序都具有关联额应用程序对象这一事实。默认情况下,如果未定义自定义应用程序对象,android将使用android.app.Application,如果指定了的话,那么一个应用程序始终只有一个应用程序对象,所有组件都可以访问它
    推荐第三种 因为这是符合android编程习惯的
      

  5.   


    你说的这个是单例得三种实现方式而已。你得网络如果放在service里面。在service里面初始化一个socket得实例。UI和service交互用异步得消息机制就好了。然后在service里面接收倒消息,然后把消息转成网络命令,让socket去执行。一般网络
      

  6.   

    使用单例模式吧。使用楼上的方法你得网络如果放在service里面。在service里面初始化一个socket得实例。UI和service交互用异步得消息机制就好了。然后在service里面接收倒消息,然后把消息转成网络命令,让socket去执行。
      

  7.   


    public class Singleton {   
           private static Singleton instance = null;   public static synchronized Singleton getInstance() {   
      if (instance==null)     instance=new Singleton();   return instance;   
           } 
    }  
    当我们需要这个连接的时候就调用getInstance 这个方法
    那么可以保证整个应用程序只有一个类的实例
      

  8.   

    我这里有一本设计模式的pdf的书  需要的话我传给你
      

  9.   


    赞同,第三种方式你可以看下这个
    http://blog.csdn.net/changy/archive/2011/03/07/6229926.aspx
      

  10.   

    而且我在连网的那个类中需要获取GPS数据,这样可以在单例模式中实现吗
      

  11.   

    android将使用android.app.Application使用程序的全局变量吧,这个是android自身提供的实现方式。 public class MyApp extends Application单例模式比这个复杂
      

  12.   

    http://topic.csdn.net/u/20110516/12/c48515a5-ed90-4d44-910d-e3490b07216f.html?98293
      

  13.   

    3:第三种方式是这样的,利用每个android应用程序都具有关联额应用程序对象这一事实。默认情况下,如果未定义自定义应用程序对象,android将使用android.app.Application,如果指定了的话,那么一个应用程序始终只有一个应用程序对象,所有组件都可以访问它
    但是报androidRuntime Handle什么的错误
      

  14.   

    应该是不会吧  很多的程序都使用到这种方法啊 可能是你的类写的有问题吧将这个类放到你建工程的时候所建的那个包里面    然后里面有得到socket的方法然后在AndroidManifest.xml文件中这样设置android:name特性
    <application android:name="ApplicationSocket"....>
        ApplicationSocket是你定义的类名   然后你要使用的时候只需要Socket socket=((Application)this.getApplication()).getSocket()就可以了 使用很简单啊  哪有这么复杂
      

  15.   


     public class MyBean {   
         private static MyBean instance = null;   
         private MyBean(){   //do something   }   
         public static synchronized MyBean getInstance()
        {   
             if(instance == null)
            {   instance = new MyBean();   }  
             return instance;   
         }   
      } 给楼主个简单的单例模式的demo