Class SyncSession


  • public class SyncSession
    extends Object
    Uma sessão controla como os dados são sincronizados entre um único Realm no dispositivo e o servidor Realm no servidor de objeto de Realm.

    Uma sessão é criada abrindo uma instância de Realm usando um SyncConfiguration. Depois que uma sessão for criada, ela continuará a existir até que o aplicativo seja fechado ou que todos os threads que usam este SyncConfiguration fechem seus respectivos Realms.

    Uma sessão é controlada pelo Realm, mas pode fornecer informações adicionais em caso de erros. Esses erros são repassados no SyncSession.ErrorHandler.

    Ao criar uma sessão, o Realm estabelecerá uma conexão com o servidor. Esta conexão é controlada pelo Realm e pode ser compartilhada entre várias sessões. É possível obter informações sobre a conexão usando addConnectionChangeListener(ConnectionListener) e isConnected().

    A sessão em si tem um ciclo de vida diferente da conexão subjacente. O estado da sessão pode ser encontrado usando getState().

    O objeto SyncSession é seguro para threads.

    • Detalhes do método

      • getConfiguration

        public SyncConfiguration getConfiguration()
        Retorna o SyncConfiguration que é responsável por controlar a sessão.
        Retorna:
        SyncConfiguration que define e controla esta sessão.
      • getUser

        utilizador público getUser ()
        Retorna o User definido pelo SyncConfiguration que é usado para se conectar ao MongoDB Realm.
        Retorna:
        User usado para autenticar a sessão no MongoDB Realm.
      • getServerUrl

        URI pública getServerUrl()
        Retorna o URI descrevendo o Realm remoto ao qual esta sessão se conecta e com a qual sincroniza as alterações.
        Retorna:
        URI descrevendo o Realm remoto.
      • getConnectionState

        Public ConnectionState getConnectionState()
        Obtenha o estado atual da conexão usada pela sessão, conforme definido em ConnectionState.
        Retorna:
        o estado da conexão usado pela sessão.
        Veja também:
        ConnectionState
      • isConnected

        boolean público isConnected()
        Verifica se a sessão está conectada ao servidor e pode sincronizar dados. Este é o melhor esforço de suposição. Para conservar bateria, a implementação subjacente usa pulsações para detectar se a conexão ainda está disponível. Portanto, se nenhum dado estiver sendo sincronizado ativamente e tiver passado algum tempo desde a última pulsação, a conexão poderá ter sido interrompida, mas esse método ainda retornará true.
        Retorna:
        true se a sessão estiver conectada e pronta para sincronizar os dados, false caso contrário, ou se estiver em processo de conexão.
      • addDownloadProgressListener

        public void addDownloadProgressListener​(ProgressMode mode,
                                                ProgressListener listener)
        Adiciona um ouvinte de progresso rastreando as alterações que precisam ser baixadas do servidor de Objeto de Realm.

        O ProgressListener será acionado imediatamente quando registrado e periodicamente depois.

        Parâmetros:
        mode - tipo de modo usado. Consulte ProgressMode para obter mais informações.
        listener - o ouvinte a se registrar.
      • addUploadProgressListener

        public void addUploadProgressListener​(ProgressMode mode,
                                              ProgressListener listener)
        Adiciona um ouvinte de progresso rastreando as alterações que precisam ser carregadas do dispositivo para o servidor de Objeto de Realm.

        O ProgressListener será acionado imediatamente quando registrado e periodicamente depois.

        Parâmetros:
        mode - tipo de modo usado. Consulte ProgressMode para obter mais informações.
        listener - o ouvinte a se registrar.
      • removeProgressListener

        public void removeProgressListener​(ProgressListener listener)
        Remove um ouvinte de progresso. Se o ouvinte não tiver sido registrado, esse método não fará nada.
        Parâmetros:
        listener - ouvinte a ser removido.
      • addConnectionChangeListener

        public void addConnectionChangeListener​(ConnectionListener listener)
        Adiciona um ouvinte rastreando alterações na conexão apoiando esta sessão. Consulte ConnectionState para obter mais detalhes.
        Parâmetros:
        listener - o ouvinte a se registrar.
        Lançamentos:
        IllegalArgumentException - se o ouvinte for null.
        Veja também:
        ConnectionState
      • downloadAllServerChanges

        public void downloadAllServerChanges()
                                      throws InterruptedException
        A chamada desse método será bloqueada até que todas as alterações remotas conhecidas tenham sido baixadas e aplicadas ao Realm. Isso envolverá acesso à rede, portanto, a chamada desse método só deve ser feita a partir de um thread que não seja da interface do usuário.

        Se o dispositivo estiver offline, esse método poderá nunca retornar.

        Este método não pode ser chamado antes que a sessão tenha sido iniciada.

        Lançamentos:
        IllegalStateException - se chamado no thread principal do Android.
        InterruptedException - se o thread foi interrompido durante o download em andamento.
      • downloadAllServerChanges

        public boolean downloadAllServerChanges(tempo limite longo, unidade TimeUnit ) lança InterruptedException
        A chamada desse método será bloqueada até que todas as alterações remotas conhecidas tenham sido baixadas e aplicadas ao Realm ou até que o tempo limite especificado seja atingido. Isso envolverá acesso à rede, portanto, a chamada desse método só deve ser feita a partir de um thread que não seja da interface do usuário.

        Este método não pode ser chamado antes que o Realm seja aberto.

        Retorna:
        true se os dados foram baixados antes do tempo-limite. false se a operação expirou ou falhou.
        Lançamentos:
        IllegalStateException - se chamado no thread principal do Android.
        InterruptedException - se o download demorou mais do que o tempo limite especificado ou se o thread foi interrompido enquanto o download estava em andamento. O download continuará em segundo plano mesmo depois que essa exceção for lançada.
        IllegalArgumentException - se timeout for menor ou igual a 0 ou unit for null.
      • uploadAllLocalChanges

        public void uploadAllLocalChanges()
                                   throws InterruptedException
        A chamada desse método será bloqueada até que todas as alterações locais conhecidas tenham sido carregadas no servidor. Isso envolverá acesso à rede, portanto, a chamada desse método só deve ser feita a partir de um thread que não seja da interface do usuário.

        Se o dispositivo estiver offline, esse método poderá nunca retornar.

        Este método não pode ser chamado antes que o Realm seja aberto.

        Lançamentos:
        IllegalStateException - se chamado no thread principal do Android.
        InterruptedException - se o thread foi interrompido durante o download em andamento.
      • uploadAllLocalChanges

        public boolean uploadAllLocalChanges(tempo limite longo, unidade TimeUnit ) lança InterruptedException
        A chamada desse método será bloqueada até que todas as alterações locais conhecidas sejam carregadas no servidor ou que o tempo limite especificado seja atingido. Isso envolverá acesso à rede, portanto, a chamada desse método só deve ser feita a partir de um thread que não seja da interface do usuário.

        Este método não pode ser chamado antes que o Realm seja aberto.

        Retorna:
        true se os dados foram carregados antes do tempo-limite. false se a operação expirou ou falhou.
        Lançamentos:
        IllegalStateException - se chamado no thread principal do Android.
        InterruptedException - se o upload demorou mais do que o tempo limite especificado ou se o thread foi interrompido enquanto o upload estava em andamento. O upload continuará em segundo plano mesmo depois que essa exceção for lançada.
        IllegalArgumentException - se timeout for menor ou igual a 0 ou unit for null.
      • iniciar

        public void start()
        Tenta iniciar a sessão e habilitar a sincronização com o servidor de Objeto de Realm.

        Isso acontece automaticamente ao abrir a instância do Realm, portanto, fazer isso manualmente só deve ser necessário se a sessão tiver sido interrompida usando stop().

        Se a sessão já tiver sido iniciada, chamar esse método não fará nada.

        Uma sessão é considerada iniciada se getState() retornar SyncSession.State.ACTIVE. Se a sessão for SyncSession.State.DYING, a sessão será movida de volta para SyncSession.State.ACTIVE.

        Veja também:
        getState(), stop()
      • parar

        public void stop()
        Interrompe qualquer sincronização com o servidor de Objeto de Realm até que o Realm seja reaberto depois de fechá-lo completamente.

        A sincronização pode ser reativada ligando para start() novamente.

        Se a sessão já estiver interrompida, chamar esse método não fará nada.