Как получить доступ к методу из сервиса во фрагмент - PullRequest
0 голосов
/ 13 мая 2019

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

SocketService.java

public int onStartCommand(Intent intent, int flags, int startId) {
        try {
            mSocket = IO.socket(Constants.CHAT_SERVER_URL);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
            mSocket.connect();
            mSocket.on("new message", onNewMessage);
        }
        return START_STICKY;
    }

Это метод, который мне нравится вызывать во фрагменте

    public Socket getSocket() {
        return mSocket.connect();
    }

Как сообщить Фрагменту, что соединение уже установлено в Сервисе

MainFragment.java

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

        setHasOptionsMenu(true);

//        ChatApplication app = (ChatApplication) getActivity().getApplication();
        SocketService app = (SocketService) getActivity().getApplication();
        mSocket = app.getSocket();
        mSocket.on(Socket.EVENT_CONNECT,onConnect);
        mSocket.on(Socket.EVENT_DISCONNECT,onDisconnect);
        mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
        mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
        mSocket.on("new message", onNewMessage);

        Intent intent = new Intent(getActivity(), SocketService.class);
        getActivity().startService(intent);
// mSocket.connect();
        startSignIn();

    }
...