Java 如何在活动之外管理Socket.IO侦听器

Java 如何在活动之外管理Socket.IO侦听器,java,android,android-activity,socket.io,Java,Android,Android Activity,Socket.io,我有一个应用程序在Android上处理多个活动。 到服务器的连接由Socket.IO通道管理 目前,我正在初始化一个公共类中的socket.on事件 然而,由于这个“socket”类是在应用程序启动时初始化的,因此在不同的活动之外,我无法从那里直接操作我的视图 我希望避免在活动中编写我的侦听器,因为有些接收者对他们来说很常见(例如身份验证部分,在整个应用程序中都有效) 计划如下: Socket.class->具有在侦听器上初始化Socket.IO的方法 活动1:启动Socket.IO连接并注册

我有一个应用程序在Android上处理多个活动。 到服务器的连接由Socket.IO通道管理

目前,我正在初始化一个公共类中的socket.on事件

然而,由于这个“socket”类是在应用程序启动时初始化的,因此在不同的活动之外,我无法从那里直接操作我的视图

我希望避免在活动中编写我的侦听器,因为有些接收者对他们来说很常见(例如身份验证部分,在整个应用程序中都有效)

计划如下:

  • Socket.class->具有在侦听器上初始化Socket.IO的方法
  • 活动1:启动Socket.IO连接并注册侦听器
  • 活动2:应该由套接字类操作
我不知道我是否清楚,请毫不犹豫地询问我进一步的细节

谢谢

Alex

您可以创建一个冷插口,然后将插座放在那里。您的活动将绑定到服务并调用方法


或者您可以使用或与Socket.class通信。

我会这样做:

1-制作一个界面:

public interface OnSocketListener {
    void method(); //add some methods to comunicate between your class and your activities
}
2-让你的听众从你的课堂上被调用:

public class SocketClass {
    private OnSockectListener mListener;
    public void setListener(OnSockectListener listener) {
        mListener = listener;
    }

   private void someEvent() {
       if (mListener != nul) {
           mListener.onSomeEvent(Data data);
       }
   }
}
3-让一个基本活动实现侦听器并实现公共实现,其余活动不实现,因此其他活动必须覆盖它:

public abstract class BaseActivity extends ActionBarActivity implements OnSocketListener {
    public void commonMethod() {
        //Some Implementation that it's common to all
    }
}
4-让您的其他活动继承该基本活动:

public class SomeActivity extends BaseActivity {
    //implements all the others methods
}
如果您想共享同一个套接字,可以将其设置为singleton:

public class SocketClass {
        private OnSockectListener mListener;
        private static SockectClass mInstance;

        private SocketClass() {
        }

        public SockectClass getInstance() {
            if (mInstance == null) {
                mInstance = new SockectClass();
            }
            return mInstance;
        }

        public void setListener(OnSockectListener listener) {
            mListener = listener;
        }

       private void someEvent() {
           if (mListener != nul) {
               mListener.onSomeEvent(Data data);
           }
       }
    }

为什么没有一个基本活动类来实现事件的通用方法和侦听器呢?我有我的MainActivity类。那么它可以访问与活动相关的视图和布局吗?我实际上在想一个抽象活动,它包含一些实现的方法和一些抽象方法,您可以在其他活动中扩展这些方法。嗨,它工作得很好。但是,由于侦听器是仅从一个活动设置的,而不是从所有活动设置的,因此我如何处理为多个活动使用公共套接字的问题?例如,我有一个套接字返回配置文件信息,可以很好地通过多个活动操纵数据和视图。为什么不让套接字成为一个单例呢?好主意,我会看看。我仍在测试最好的方法。。。仍然锁定在我的体系结构中以管理多个套接字。但是是的,它看起来像是在基础上工作。。。将其标记为已解决。