public static void startEventStreamService(Context context) { // the events stream service is launched // either the application has never be launched // or the service has been killed on low memory if (EventStreamService.getInstance() == null) { ArrayList<String> matrixIds = new ArrayList<String>(); Collection<MXSession> sessions = Matrix.getInstance(context.getApplicationContext()).getSessions(); if ((null != sessions) && (sessions.size() > 0)) { Log.d(LOG_TAG, "restart EventStreamService"); for (MXSession session : sessions) { Boolean isSessionReady = session.getDataHandler().getStore().isReady(); if (!isSessionReady) { session.getDataHandler().getStore().open(); } // session to activate matrixIds.add(session.getCredentials().userId); } Intent intent = new Intent(context, EventStreamService.class); intent.putExtra( EventStreamService.EXTRA_MATRIX_IDS, matrixIds.toArray(new String[matrixIds.size()])); intent.putExtra( EventStreamService.EXTRA_STREAM_ACTION, EventStreamService.StreamAction.START.ordinal()); context.startService(intent); } } }
public static void logout(Activity activity, MXSession session, Boolean clearCredentials) { if (session.isActive()) { // stop the service EventStreamService eventStreamService = EventStreamService.getInstance(); ArrayList<String> matrixIds = new ArrayList<String>(); matrixIds.add(session.getMyUser().userId); eventStreamService.stopAccounts(matrixIds); // Publish to the server that we're now offline MyPresenceManager.getInstance(activity, session).advertiseOffline(); MyPresenceManager.remove(session); // unregister from the GCM. Matrix.getInstance(activity) .getSharedGcmRegistrationManager() .unregisterSession(session, null); // clear credentials Matrix.getInstance(activity).clearSession(activity, session, clearCredentials); } }
public static Boolean shouldRestartApp() { EventStreamService eventStreamService = EventStreamService.getInstance(); return !Matrix.hasValidSessions() || (null == eventStreamService); }