Java 如何在活动之外管理Socket.IO侦听器
我有一个应用程序在Android上处理多个活动。 到服务器的连接由Socket.IO通道管理 目前,我正在初始化一个公共类中的socket.on事件 然而,由于这个“socket”类是在应用程序启动时初始化的,因此在不同的活动之外,我无法从那里直接操作我的视图 我希望避免在活动中编写我的侦听器,因为有些接收者对他们来说很常见(例如身份验证部分,在整个应用程序中都有效) 计划如下: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连接并注册
- Socket.class->具有在侦听器上初始化Socket.IO的方法
- 活动1:启动Socket.IO连接并注册侦听器
- 活动2:应该由套接字类操作
或者您可以使用或与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类。那么它可以访问与活动相关的视图和布局吗?我实际上在想一个抽象活动,它包含一些实现的方法和一些抽象方法,您可以在其他活动中扩展这些方法。嗨,它工作得很好。但是,由于侦听器是仅从一个活动设置的,而不是从所有活动设置的,因此我如何处理为多个活动使用公共套接字的问题?例如,我有一个套接字返回配置文件信息,可以很好地通过多个活动操纵数据和视图。为什么不让套接字成为一个单例呢?好主意,我会看看。我仍在测试最好的方法。。。仍然锁定在我的体系结构中以管理多个套接字。但是是的,它看起来像是在基础上工作。。。将其标记为已解决。