Как подключить сокет из Сервиса и сообщить Fragment, что сокет подключен - PullRequest
0 голосов
/ 14 мая 2019

Я вызываю метод из класса Application to Fragment следующим образом:

ChatApplication app = (ChatApplication) getActivity().getApplication(); mSocket = app.getSocket();

, и я получаю mSocket соединение. Как сделать то же самое, но с помощью службы вместо приложения? Фрагменту требуется соединение с сокетом для запуска других действий.Мне нужно, чтобы соединение было в Сервисе, а не во Фрагменте или другом.

ChatApplication.java

package com.github.nkzawa.socketio.androidchat;

import android.app.Application;
import io.socket.client.IO;
import io.socket.client.Socket;

import java.net.URISyntaxException;

public class ChatApplication extends Application {

    private Socket mSocket;
    {
        try {
            mSocket = IO.socket(Constants.CHAT_SERVER_URL);
            mSocket.connect();
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    public Socket getSocket() {
        return mSocket;
    }
}

MainFragment.java

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setHasOptionsMenu(true);

        ChatApplication app = (ChatApplication) getActivity().getApplication();
        mSocket = app.getSocket();

        startSignIn();
    }
...