{"id":2902,"date":"2017-03-07T08:42:52","date_gmt":"2017-03-07T16:42:52","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2902"},"modified":"2025-06-13T20:09:45","modified_gmt":"2025-06-14T03:09:45","slug":"determining-status-replication-couchbase-lite","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/determining-status-replication-couchbase-lite\/","title":{"rendered":"Determina\u00e7\u00e3o do status de uma replica\u00e7\u00e3o no Couchbase Lite"},"content":{"rendered":"<div id=\"attachment_2919\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2919\" class=\"size-full wp-image-2919\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/19300545790_82ac2a3444_z.jpg\" alt=\"\" width=\"640\" height=\"427\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg 640w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z-300x200.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z-400x267.jpg 400w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z-450x300.jpg 450w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z-20x13.jpg 20w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><p id=\"caption-attachment-2919\" class=\"wp-caption-text\">Cortesia de Andr\u00e9s Nieto Porras (https:\/\/www.flickr.com\/photos\/anieto2k)<\/p><\/div>\n<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/guides\/couchbase-lite\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase Lite<\/a> executa replica\u00e7\u00f5es (sincroniza\u00e7\u00f5es) usando threads em segundo plano. O in\u00edcio e a interrup\u00e7\u00e3o das replica\u00e7\u00f5es n\u00e3o ocorrem de forma s\u00edncrona. Isso pode levar a erros na detec\u00e7\u00e3o do estado de uma replica\u00e7\u00e3o.<\/p>\n<p>O <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/references\/couchbase-lite\/couchbase-lite\/replication\/index.html\">Classe de replica\u00e7\u00e3o<\/a> tem, dependendo da plataforma, um <code>em execu\u00e7\u00e3o<\/code> ou uma rotina de conveni\u00eancia como <code>isRunning()<\/code>. Essa \u00e9 uma maneira leve de verificar o status de uma replica\u00e7\u00e3o.<\/p>\n<p>No entanto, seu uso pode levar a resultados inesperados. Por exemplo, recentemente escrevi um utilit\u00e1rio que usa replica\u00e7\u00f5es cont\u00ednuas. Tenho um bot\u00e3o de altern\u00e2ncia para inici\u00e1-las e interromp\u00ea-las. \u00c9 tentador usar o <code>isRunning<\/code> para atualizar o estado do bot\u00e3o. Acontece que essa \u00e9 uma m\u00e1 ideia. N\u00e3o \u00e9 de surpreender, j\u00e1 que as altera\u00e7\u00f5es ocorrem em segundo plano, mas \u00e9 f\u00e1cil ignorar.<\/p>\n<p>Em vez disso, a abordagem preferida usa um ouvinte de altera\u00e7\u00f5es. Veja um exemplo.<\/p>\n<p>Temos duas classes. A classe auxiliar de banco de dados engloba algumas opera\u00e7\u00f5es padr\u00e3o para simplificar. Adicionei uma interface para empregar um padr\u00e3o de retorno de chamada. A classe cliente precisa implement\u00e1-la. A classe auxiliar digere a notifica\u00e7\u00e3o de altera\u00e7\u00e3o do Couchbase Lite antes de passar qualquer coisa para o cliente. Isso proporciona uma boa separa\u00e7\u00e3o de preocupa\u00e7\u00f5es.<\/p>\n<p>As listagens de c\u00f3digos abaixo s\u00e3o resumidas. Elas mostram apenas o essencial. Vamos dar uma olhada na classe auxiliar primeiro.<\/p>\n<pre class=\"lang:java decode:true\">public class DBHelper implements Replication.ChangeListener {\r\n  private boolean replicationActive = false;\r\n  private List stateListeners = new ArrayList&amp;lt;&amp;gt;();\r\n  ...\r\n\r\n  public interface ReplicationStateListener {\r\n    void onChange(boolean isActive);\r\n  }\r\n\r\n  public void startReplication(URL gateway, boolean continuous) {\r\n    ...\r\n\r\n    pushReplication.addChangeListener(this);\r\n    pushReplication.start();\r\n  }\r\n\r\n  public void stopReplication() {\r\n    ...\r\n  }\r\n\r\n  public void addReplicationStateListener(ReplicationStateListener listener) {\r\n    stateListeners.add(listener);\r\n  }\r\n\r\n  public void removeReplicationStateListener(ReplicationStateListener listener) {\r\n    stateListeners.remove(listener);\r\n  }\r\n\r\n  \/\/ Replication.ChangeListener\r\n  @Override\r\n  public void changed(Replication.ChangeEvent changeEvent) {\r\n    if (changeEvent.getError() != null) {\r\n      Throwable lastError = changeEvent.getError();\r\n\r\n      \/\/ React to the error\r\n\r\n      return;\r\n    }\r\n\r\n    if (changeEvent.getTransition() == null) return;\r\n\r\n    ReplicationState dest = changeEvent.getTransition().getDestination();\r\n\r\n    replicationActive = ((dest == ReplicationState.STOPPING || dest == ReplicationState.STOPPED) ? false : true);\r\n\r\n    stateListeners.forEach(listener -&gt; listener.onChange(replicationActive));\r\n  }\r\n}<\/pre>\n<p>Vemos que o DBHelper implementa a fun\u00e7\u00e3o <code>Replica\u00e7\u00e3o.ChangeListener<\/code> interface. Essa \u00e9 uma interface definida pelo Couchbase Lite. Em <code>startReplication<\/code> adicionamos esse ouvinte \u00e0 replica\u00e7\u00e3o. Ele tem um m\u00e9todo a ser substitu\u00eddo, <code>alterado<\/code>. O <code>ChangeEvent<\/code> transmitido pode ter v\u00e1rios valores diferentes. No exemplo, primeiro verifico se h\u00e1 erros e notifico o usu\u00e1rio se ocorrer algum. Caso contr\u00e1rio, verifico se esse \u00e9 um evento de transi\u00e7\u00e3o de estado de replica\u00e7\u00e3o. O estado de destino pode ser um dos seguintes <code>INICIAL<\/code>, <code>CORRIDA<\/code>, <code>IDLE<\/code>, <code>OFFLINE<\/code>, <code>PARAR<\/code>ou <code>PARADO<\/code>.<\/p>\n<p>Nesse caso, s\u00f3 quero saber se a replica\u00e7\u00e3o est\u00e1 sendo encerrada, por isso simplifico o valor de retorno. Permito que os clientes registrem mais de um ouvinte, portanto, a \u00faltima parte do c\u00f3digo faz um loop em todas as callbacks e as invoca.<\/p>\n<p>A classe cliente \u00e9 ainda mais simples. Fa\u00e7o com que a classe implemente a interface necess\u00e1ria da classe auxiliar. Basta registrar o ouvinte durante a constru\u00e7\u00e3o da inst\u00e2ncia e fazer com que <code>onChange<\/code> fa\u00e7a o que for necess\u00e1rio na interface do usu\u00e1rio.<\/p>\n<pre><code class=\"language-java\">public class Client implements DBHelper.ReplicationStateListener {\r\n  private DBHelper service = DBHelper.getInstance();\r\n  ...\r\n\r\n  public Client() {\r\n    service.addReplicationStateListener(this);\r\n  }\r\n\r\n  ...\r\n\r\n  \/\/ DBHelper.ReplicationStateListener\r\n  @Override\r\n  public void onChange(boolean isActive) {\r\n    \/\/ Code to handle the change\r\n  }\r\n}<\/code><\/pre>\n<p>Esse c\u00f3digo foi extra\u00eddo de uma ferramenta que criei. Leia sobre a pr\u00f3pria ferramenta em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-mobile-changes-explorer-part-1\/\">esta postagem<\/a>Voc\u00ea pode encontrar o c\u00f3digo-fonte no GitHub <a href=\"https:\/\/github.com\/couchbaselabs\/CBM-Changes-Explorer\">aqui<\/a>.<\/p>\n<h2>P\u00f3s-escrito<\/h2>\n<p>Confira mais recursos em nosso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/community\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">portal do desenvolvedor<\/a> e nos siga no Twitter <a href=\"https:\/\/twitter.com\/CouchbaseDev\">@CouchbaseDev<\/a>.<\/p>\n<p>Voc\u00ea pode postar perguntas em nosso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">f\u00f3runs<\/a>. E participamos ativamente de <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">Estouro de pilha<\/a>.<\/p>\n<p>Entre em contato comigo no Twitter <a href=\"https:\/\/twitter.com\/HodGreeley\">@HodGreeley<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase Lite runs replications (syncs) using background threads. Starting and stopping replications doesn&#8217;t happen synchronously. This can lead to mistakes in detecting the state of a replication. The Replication class has, depending on platform, either a running property or a [&hellip;]<\/p>","protected":false},"author":73,"featured_media":2919,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,7667,1810],"tags":[1562],"ppma_author":[9042],"class_list":["post-2902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-lite","category-couchbase-mobile","tag-replication"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Determining Status of a Replication in Couchbase Lite - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"This blog focuses on how to use Replication class and change listener for checking the status of replication in Couchbase Lite.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/determining-status-replication-couchbase-lite\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Determining Status of a Replication in Couchbase Lite\" \/>\n<meta property=\"og:description\" content=\"This blog focuses on how to use Replication class and change listener for checking the status of replication in Couchbase Lite.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/determining-status-replication-couchbase-lite\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-07T16:42:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:09:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"427\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@HodGreeley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/\"},\"author\":{\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4\"},\"headline\":\"Determining Status of a Replication in Couchbase Lite\",\"datePublished\":\"2017-03-07T16:42:52+00:00\",\"dateModified\":\"2025-06-14T03:09:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/\"},\"wordCount\":434,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg\",\"keywords\":[\"replication\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Lite\",\"Couchbase Mobile\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/\",\"name\":\"Determining Status of a Replication in Couchbase Lite - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg\",\"datePublished\":\"2017-03-07T16:42:52+00:00\",\"dateModified\":\"2025-06-14T03:09:45+00:00\",\"description\":\"This blog focuses on how to use Replication class and change listener for checking the status of replication in Couchbase Lite.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg\",\"width\":640,\"height\":427,\"caption\":\"Courtesy of Andr\u00e9s Nieto Porras (https:\/\/www.flickr.com\/photos\/anieto2k)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Determining Status of a Replication in Couchbase Lite\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4\",\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/21eb69cb5d4a401fb23b149e4f4e9e87\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"caption\":\"Hod Greeley, Developer Advocate, Couchbase\"},\"description\":\"Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University.\",\"sameAs\":[\"https:\/\/hod.greeley.org\/blog\",\"https:\/\/x.com\/HodGreeley\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/hod-greeley\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Determina\u00e7\u00e3o do status de uma replica\u00e7\u00e3o no Couchbase Lite - The Couchbase Blog","description":"This blog focuses on how to use Replication class and change listener for checking the status of replication in Couchbase Lite.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/determining-status-replication-couchbase-lite\/","og_locale":"pt_BR","og_type":"article","og_title":"Determining Status of a Replication in Couchbase Lite","og_description":"This blog focuses on how to use Replication class and change listener for checking the status of replication in Couchbase Lite.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/determining-status-replication-couchbase-lite\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-03-07T16:42:52+00:00","article_modified_time":"2025-06-14T03:09:45+00:00","og_image":[{"width":640,"height":427,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg","type":"image\/jpeg"}],"author":"Hod Greeley, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@HodGreeley","twitter_misc":{"Written by":"Hod Greeley, Developer Advocate, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/"},"author":{"name":"Hod Greeley, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4"},"headline":"Determining Status of a Replication in Couchbase Lite","datePublished":"2017-03-07T16:42:52+00:00","dateModified":"2025-06-14T03:09:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/"},"wordCount":434,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg","keywords":["replication"],"articleSection":["Best Practices and Tutorials","Couchbase Lite","Couchbase Mobile"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/","url":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/","name":"Determina\u00e7\u00e3o do status de uma replica\u00e7\u00e3o no Couchbase Lite - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg","datePublished":"2017-03-07T16:42:52+00:00","dateModified":"2025-06-14T03:09:45+00:00","description":"This blog focuses on how to use Replication class and change listener for checking the status of replication in Couchbase Lite.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/19300545790_82ac2a3444_z.jpg","width":640,"height":427,"caption":"Courtesy of Andr\u00e9s Nieto Porras (https:\/\/www.flickr.com\/photos\/anieto2k)"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/determining-status-replication-couchbase-lite\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Determining Status of a Replication in Couchbase Lite"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4","name":"Hod Greeley, Advogado do desenvolvedor, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/21eb69cb5d4a401fb23b149e4f4e9e87","url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","caption":"Hod Greeley, Developer Advocate, Couchbase"},"description":"Hod Greeley \u00e9 um defensor dos desenvolvedores da Couchbase e mora no Vale do Sil\u00edcio. Ele tem mais de duas d\u00e9cadas de experi\u00eancia como engenheiro de software e gerente de engenharia. Trabalhou em diversas \u00e1reas de software, incluindo f\u00edsica e qu\u00edmica computacional, seguran\u00e7a de computadores e redes, finan\u00e7as e dispositivos m\u00f3veis. Antes de ingressar na Couchbase em 2016, Hod liderou as rela\u00e7\u00f5es com desenvolvedores para dispositivos m\u00f3veis na Samsung. Hod \u00e9 Ph.D. em f\u00edsica qu\u00edmica pela Universidade de Columbia.","sameAs":["https:\/\/hod.greeley.org\/blog","https:\/\/x.com\/HodGreeley"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/hod-greeley\/"}]}},"authors":[{"term_id":9042,"user_id":73,"is_guest":0,"slug":"hod-greeley","display_name":"Hod Greeley, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","author_category":"","last_name":"Greeley","first_name":"Hod","job_title":"","user_url":"https:\/\/hod.greeley.org\/blog","description":"Hod Greeley \u00e9 um defensor dos desenvolvedores da Couchbase e mora no Vale do Sil\u00edcio. Ele tem mais de duas d\u00e9cadas de experi\u00eancia como engenheiro de software e gerente de engenharia. Trabalhou em diversas \u00e1reas de software, incluindo f\u00edsica e qu\u00edmica computacional, seguran\u00e7a de computadores e redes, finan\u00e7as e dispositivos m\u00f3veis. Antes de ingressar na Couchbase em 2016, Hod liderou as rela\u00e7\u00f5es com desenvolvedores para dispositivos m\u00f3veis na Samsung. Hod \u00e9 Ph.D. em f\u00edsica qu\u00edmica pela Universidade de Columbia."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2902"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2902\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/2919"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2902"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}