在我的应用程序中我无法创建简单的单一服务来连接到Socket,在我的应用程序中首次运行应用程序后我可以发出一个请求,但在关闭应用程序并再次运行后,我的应用程序向socket.io发送两次请求,之后从最近的应用程序中清除应用程序,向socket.io发送多个请求。请帮我创建一个服务来创建一个连接,谢谢
我的服务:
public class SignalChatServiceProvider extends Service {
public static SignalChatServiceProvider instance = null;
public static boolean isInstanceCreated() {
return instance == null ? false : true;
}
@Override
public IBinder onBind(Intent intent) {
return myBinder;
}
private final IBinder myBinder = new LocalBinder();
public class LocalBinder extends Binder {
public SignalChatServiceProvider getService() {
return SignalChatServiceProvider.this;
}
}
@Override
public void onCreate() {
super.onCreate();
realm = Realm.getDefaultInstance();
signalApplication = (SignalApplication) getApplication();
EventBus.getDefault().register(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
connectConnection();
Log.e("EJRA...", "");
return START_STICKY;
}
private Runnable onTypingTimeout = new Runnable() {
@Override
public void run() {
}
};
private void connectConnection() {
instance = this;
signalApplication.CHAT_SOCKET = signalApplication.getSocket();
signalApplication.getSocket().on(Socket.EVENT_CONNECT_ERROR, onConnectError);
signalApplication.getSocket().on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
signalApplication.getSocket().on(Socket.EVENT_CONNECT, onConnect);
signalApplication.getSocket().on("new message", onNewMessage);
signalApplication.getSocket().on("user joined", onUserJoined);
signalApplication.getSocket().on("getProductImages", getProductImages);
signalApplication.getSocket().connect();
}
private void disconnectConnection() {
instance = null;
signalApplication.getSocket().disconnect();
signalApplication.getSocket().off(Socket.EVENT_CONNECT, onConnect);
signalApplication.getSocket().off(Socket.EVENT_DISCONNECT, onDisconnect);
signalApplication.getSocket().off(Socket.EVENT_CONNECT_ERROR, onConnectError);
signalApplication.getSocket().off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
signalApplication.getSocket().off("new message", onNewMessage);
signalApplication.getSocket().off("user joined", onUserJoined);
signalApplication.getSocket().off("getProductImages", getProductImages);
signalApplication.getSocket().disconnect();
}
@Override
public void onDestroy() {
super.onDestroy();
disconnectConnection();
if (!realm.isClosed())
realm.close();
}
}
ActivityMain:
if (signalApplication.getSocket() != null && !SignalChatServiceProvider.isInstanceCreated()) {
startService(new Intent(getBaseContext(), SignalChatServiceProvider.class));
}
申请类:
public class SignalApplication extends Application {
public static List<MarketsBaseInformation> market_list_cache_data;
public static Socket CHAT_SOCKET;
@Override
public void onCreate() {
super.onCreate();
resources = this.getResources();
context = getApplicationContext();
IO.Options opts = new IO.Options();
opts.forceNew = true;
opts.reconnection = true;
try {
CHAT_SOCKET = IO.socket(ClientSettings.getChatAddress(), opts);
} catch (URISyntaxException e) {
e.printStackTrace();
Log.e("SOCKET.IO ", e.getMessage());
}
}
public Socket getSocket() {
return CHAT_SOCKET;
}
}
答案 0 :(得分:0)
问题已解决
gradlew androidInstall