3

基本思想是,当应用程序启动时,一个类将简单地建立到服务器的套接字连接并定义输出和输入流,这些应该通过需要交互的所有不同活动来访问,因此套接字必须始终处于活动状态并准备就绪。

到目前为止,我的想法是创建一个简单地创建套接字和连接的类:

public class connection {
    private  String HostIPaddress = "XXX.XXX.XXX.XXX";
    private  int PORT = XXXX;
    public  Socket sock = null;
    public  DataOutputStream out = null;
    public  DataInputStream in = null;

    public void assignStreams(){
        try{
            sock = new Socket(getHostIPaddress(),getPORT());
            out = new DataOutputStream(sock.getOutputStream());
            in = new DataInputStream(sock.getInputStream());
        }catch (Exception ex) {
            Log.i("Connection Error",ex.toString());
        }
      }
    }

然后从首先运行的活动中,创建此类的静态对象,所有其他活动都可以访问该对象。听起来这可行,但我希望有更多的想法或反馈?

4

2 回答 2

2

不,不是一个好主意。用户可以随时关闭互联网,而您的班级正在使用网络连接,而此时可能根本不需要网络连接。插座后清理也是不可能的。你怎么知道什么时候close()去呢?

您最好根据需要创建这些。您的课程的封装也很差。

public  Socket sock = null;
public  DataOutputStream out = null;
public  DataInputStream in = null;

这些流可以随时重新分配。用 getters() 和 setters() 保护它们。

于 2013-04-10T05:36:31.937 回答
1

我不知道为什么这是不可能的。

是不是个好主意,我不知道。

我用你的方式实现它的两分钱是,创建一个单例类。

单例模式示例

这篇文章的学分转到http://www.javacoffeebreak.com/

除了他们的准系统实现之外,确保你有一个方法来检索你的套接字,同样重要的是,关闭你的套接字。当您的应用程序被破坏时,您可以执行此操作。我相信应用程序对象的 onDestroy 方法是一个不错的地方,因为我记得这将是在您的应用程序完全耗尽内存之前调用的最后一个 onDestroy 方法。

话虽如此..如果您的应用程序崩溃怎么办?你需要以某种方式清理。按需创建套接字可能是最安全的方法。

请注意,如果您有一个在活动期间始终打开的套接字,则很容易忘记您需要关闭它。管理每个活动而不是全局的套接字的另一个原因。

于 2013-04-10T05:55:42.090 回答