<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_13) on Wed Apr 23 18:07:53 CST 2014 -->
<title>R-Index</title>
<meta name="date" content="2014-04-23">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="R-Index";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../org/eclipse/paho/android/service/package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li><a href="../overview-tree.html">Tree</a></li>
<li><a href="../deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="index-10.html">Prev Letter</a></li>
<li><a href="index-12.html">Next Letter</a></li>
</ul>
<ul class="navList">
<li><a href="../index.html?index-filesindex-11.html" target="_top">Frames</a></li>
<li><a href="index-11.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="index-1.html">A</a>&nbsp;<a href="index-2.html">C</a>&nbsp;<a href="index-3.html">D</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">I</a>&nbsp;<a href="index-6.html">M</a>&nbsp;<a href="index-7.html">N</a>&nbsp;<a href="index-8.html">O</a>&nbsp;<a href="index-9.html">P</a>&nbsp;<a href="index-10.html">Q</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">T</a>&nbsp;<a href="index-14.html">U</a>&nbsp;<a href="index-15.html">V</a>&nbsp;<a href="index-16.html">W</a>&nbsp;<a name="_R_">
<!--   -->
</a>
<h2 class="title">R</h2>
<dl>
<dt><span class="strong"><a href="../org/eclipse/paho/android/service/MqttConnection.html#reconnect()">reconnect()</a></span> - Method in class org.eclipse.paho.android.service.<a href="../org/eclipse/paho/android/service/MqttConnection.html" title="class in org.eclipse.paho.android.service">MqttConnection</a></dt>
<dd>
<div class="block">Reconnect<br>
 Only appropriate if cleanSession is false and we were connected
 Declare as synchronized to avoid multiple calls to this method to send connect 
 multiple times</div>
</dd>
<dt><span class="strong"><a href="../org/eclipse/paho/android/service/MqttService.html#reconnect()">reconnect()</a></span> - Method in class org.eclipse.paho.android.service.<a href="../org/eclipse/paho/android/service/MqttService.html" title="class in org.eclipse.paho.android.service">MqttService</a></dt>
<dd>
<div class="block">Request all clients to reconnect if appropriate</div>
</dd>
<dt><span class="strong"><a href="../org/eclipse/paho/android/service/MqttAndroidClient.html#registerResources(Context)">registerResources(Context)</a></span> - Method in class org.eclipse.paho.android.service.<a href="../org/eclipse/paho/android/service/MqttAndroidClient.html" title="class in org.eclipse.paho.android.service">MqttAndroidClient</a></dt>
<dd>
<div class="block">Register receiver to receiver intent from MqttService.</div>
</dd>
<dt><span class="strong"><a href="../org/eclipse/paho/android/service/MqttServiceConstants.html#RETAINED">RETAINED</a></span> - Static variable in interface org.eclipse.paho.android.service.<a href="../org/eclipse/paho/android/service/MqttServiceConstants.html" title="interface in org.eclipse.paho.android.service">MqttServiceConstants</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">C</a>&nbsp;<a href="index-3.html">D</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">I</a>&nbsp;<a href="index-6.html">M</a>&nbsp;<a href="index-7.html">N</a>&nbsp;<a href="index-8.html">O</a>&nbsp;<a href="index-9.html">P</a>&nbsp;<a href="index-10.html">Q</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">T</a>&nbsp;<a href="index-14.html">U</a>&nbsp;<a href="index-15.html">V</a>&nbsp;<a href="index-16.html">W</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../org/eclipse/paho/android/service/package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li><a href="../overview-tree.html">Tree</a></li>
<li><a href="../deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="index-10.html">Prev Letter</a></li>
<li><a href="index-12.html">Next Letter</a></li>
</ul>
<ul class="navList">
<li><a href="../index.html?index-filesindex-11.html" target="_top">Frames</a></li>
<li><a href="index-11.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
