blob: 210b1352d57e32287d97bc6b40c564893def5347 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<link rel="shortcut icon" type="image/x-icon" href="../../../../../favicon.ico" />
<title>ServiceTestRule | Android Developers</title>
<!-- STYLESHEETS -->
<link rel="stylesheet"
href="http://fonts.googleapis.com/css?family=Roboto+Condensed">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
title="roboto">
<link href="../../../../../assets/css/default.css?v=5" rel="stylesheet" type="text/css">
<!-- FULLSCREEN STYLESHEET -->
<link href="../../../../../assets/css/fullscreen.css" rel="stylesheet" class="fullscreen"
type="text/css">
<!-- JAVASCRIPT -->
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script src="../../../../../assets/js/android_3p-bundle.js" type="text/javascript"></script>
<script type="text/javascript">
var toRoot = "../../../../../";
var metaTags = [];
var devsite = false;
</script>
<script src="../../../../../assets/js/docs.js?v=3" type="text/javascript"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-5831155-1', 'android.com');
ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'}); // New tracker);
ga('send', 'pageview');
ga('universal.send', 'pageview'); // Send page view for new tracker.
</script>
</head>
<body class="gc-documentation
develop reference" itemscope itemtype="http://schema.org/Article">
<div id="doc-api-level" class="" style="display:none"></div>
<a name="top"></a>
<a name="top"></a>
<!-- dialog to prompt lang pref change when loaded from hardcoded URL
<div id="langMessage" style="display:none">
<div>
<div class="lang en">
<p>You requested a page in English, would you like to proceed with this language setting?</p>
</div>
<div class="lang es">
<p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
</div>
<div class="lang ja">
<p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
</div>
<div class="lang ko">
<p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
</div>
<div class="lang ru">
<p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
</div>
<div class="lang zh-cn">
<p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
</div>
<div class="lang zh-tw">
<p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
</div>
<a href="#" class="button yes" onclick="return false;">
<span class="lang en">Yes</span>
<span class="lang es">Sí</span>
<span class="lang ja">Yes</span>
<span class="lang ko">Yes</span>
<span class="lang ru">Yes</span>
<span class="lang zh-cn">是的</span>
<span class="lang zh-tw">没有</span>
</a>
<a href="#" class="button" onclick="$('#langMessage').hide();return false;">
<span class="lang en">No</span>
<span class="lang es">No</span>
<span class="lang ja">No</span>
<span class="lang ko">No</span>
<span class="lang ru">No</span>
<span class="lang zh-cn">没有</span>
<span class="lang zh-tw">没有</span>
</a>
</div>
</div> -->
<!-- Header -->
<div id="header-wrapper">
<div id="header">
<div class="wrap" id="header-wrap">
<div class="col-3 logo">
<a href="../../../../../index.html">
<img src="../../../../../assets/images/dac_logo.png"
srcset="../../../../../assets/images/dac_logo@2x.png 2x"
width="123" height="25" alt="Android Developers" />
</a>
<div class="btn-quicknav" id="btn-quicknav">
<a href="#" class="arrow-inactive">Quicknav</a>
<a href="#" class="arrow-active">Quicknav</a>
</div>
</div>
<ul class="nav-x col-9">
<li class="design">
<a href="../../../../../design/index.html"
zh-tw-lang="設計"
zh-cn-lang="设计"
ru-lang="Проектирование"
ko-lang="디자인"
ja-lang="設計"
es-lang="Diseñar"
>Design</a></li>
<li class="develop"><a href="../../../../../develop/index.html"
zh-tw-lang="開發"
zh-cn-lang="开发"
ru-lang="Разработка"
ko-lang="개발"
ja-lang="開発"
es-lang="Desarrollar"
>Develop</a></li>
<li class="distribute last"><a href="../../../../../distribute/index.html"
zh-tw-lang="發佈"
zh-cn-lang="分发"
ru-lang="Распространение"
ko-lang="배포"
ja-lang="配布"
es-lang="Distribuir"
>Distribute</a></li>
</ul>
<div class="menu-container">
<div class="moremenu">
<div id="more-btn"></div>
</div>
<div class="morehover" id="moremenu">
<div class="top"></div>
<div class="mid">
<div class="header">Links</div>
<ul>
<li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
<li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
<li><a href="../../../../../about/index.html">About Android</a></li>
</ul>
<div class="header">Android Sites</div>
<ul>
<li><a href="http://www.android.com">Android.com</a></li>
<li class="active"><a>Android Developers</a></li>
<li><a href="http://source.android.com">Android Open Source Project</a></li>
</ul>
<br class="clearfix" />
</div><!-- end 'mid' -->
<div class="bottom"></div>
</div><!-- end 'moremenu' -->
<div class="search" id="search-container">
<div class="search-inner">
<div id="search-btn"></div>
<div class="left"></div>
<form onsubmit="return submit_search()">
<input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
onkeydown="return search_changed(event, true, '../../../../../')"
onkeyup="return search_changed(event, false, '../../../../../')" />
</form>
<div class="right"></div>
<a class="close hide">close</a>
<div class="left"></div>
<div class="right"></div>
</div><!-- end search-inner -->
</div><!-- end search-container -->
<div class="search_filtered_wrapper reference">
<div class="suggest-card reference no-display">
<ul class="search_filtered">
</ul>
</div>
</div>
<div class="search_filtered_wrapper docs">
<div class="suggest-card dummy no-display">&nbsp;</div>
<div class="suggest-card develop no-display">
<ul class="search_filtered">
</ul>
<div class="child-card guides no-display">
</div>
<div class="child-card training no-display">
</div>
<div class="child-card samples no-display">
</div>
</div>
<div class="suggest-card design no-display">
<ul class="search_filtered">
</ul>
</div>
<div class="suggest-card distribute no-display">
<ul class="search_filtered">
</ul>
</div>
</div>
</div><!-- end menu-container (search and menu widget) -->
<!-- Expanded quicknav -->
<div id="quicknav" class="col-13">
<ul>
<li class="about">
<ul>
<li><a href="../../../../../about/index.html">About</a></li>
<li><a href="../../../../../wear/index.html">Wear</a></li>
<li><a href="../../../../../tv/index.html">TV</a></li>
<li><a href="../../../../../auto/index.html">Auto</a></li>
</ul>
</li>
<li class="design">
<ul>
<li><a href="../../../../../design/index.html">Get Started</a></li>
<li><a href="../../../../../design/devices.html">Devices</a></li>
<li><a href="../../../../../design/style/index.html">Style</a></li>
<li><a href="../../../../../design/patterns/index.html">Patterns</a></li>
<li><a href="../../../../../design/building-blocks/index.html">Building Blocks</a></li>
<li><a href="../../../../../design/downloads/index.html">Downloads</a></li>
<li><a href="../../../../../design/videos/index.html">Videos</a></li>
</ul>
</li>
<li class="develop">
<ul>
<li><a href="../../../../../training/index.html"
zh-tw-lang="訓練課程"
zh-cn-lang="培训"
ru-lang="Курсы"
ko-lang="교육"
ja-lang="トレーニング"
es-lang="Capacitación"
>Training</a></li>
<li><a href="../../../../../guide/index.html"
zh-tw-lang="API 指南"
zh-cn-lang="API 指南"
ru-lang="Руководства по API"
ko-lang="API 가이드"
ja-lang="API ガイド"
es-lang="Guías de la API"
>API Guides</a></li>
<li><a href="../../../../../reference/packages.html"
zh-tw-lang="參考資源"
zh-cn-lang="参考"
ru-lang="Справочник"
ko-lang="참조문서"
ja-lang="リファレンス"
es-lang="Referencia"
>Reference</a></li>
<li><a href="../../../../../sdk/index.html"
zh-tw-lang="相關工具"
zh-cn-lang="工具"
ru-lang="Инструменты"
ko-lang="도구"
ja-lang="ツール"
es-lang="Herramientas"
>Tools</a>
</li>
<li><a href="../../../../../google/index.html">Google Services</a>
</li>
</ul>
</li>
<li class="distribute last">
<ul>
<li><a href="../../../../../distribute/googleplay/index.html">Google Play</a></li>
<li><a href="../../../../../distribute/essentials/index.html">Essentials</a></li>
<li><a href="../../../../../distribute/users/index.html">Get Users</a></li>
<li><a href="../../../../../distribute/engage/index.html">Engage &amp; Retain</a></li>
<li><a href="../../../../../distribute/monetize/index.html">Monetize</a></li>
<li><a href="../../../../../distribute/analyze/index.html">Analyze</a></li>
<li><a href="../../../../../distribute/tools/index.html">Tools &amp; Reference</a></li>
<li><a href="../../../../../distribute/stories/index.html">Developer Stories</a></li>
</ul>
</li>
</ul>
</div><!-- /Expanded quicknav -->
</div><!-- end header-wrap.wrap -->
</div><!-- end header -->
<!-- Secondary x-nav -->
<div id="nav-x">
<div class="wrap" style="position:relative;z-index:1">
<ul class="nav-x col-9 develop" style="width:100%">
<li class="training"><a href="../../../../../training/index.html"
zh-tw-lang="訓練課程"
zh-cn-lang="培训"
ru-lang="Курсы"
ko-lang="교육"
ja-lang="トレーニング"
es-lang="Capacitación"
>Training</a></li>
<li class="guide"><a href="../../../../../guide/index.html"
zh-tw-lang="API 指南"
zh-cn-lang="API 指南"
ru-lang="Руководства по API"
ko-lang="API 가이드"
ja-lang="API ガイド"
es-lang="Guías de la API"
>API Guides</a></li>
<li class="reference"><a href="../../../../../reference/packages.html"
zh-tw-lang="參考資源"
zh-cn-lang="参考"
ru-lang="Справочник"
ko-lang="참조문서"
ja-lang="リファレンス"
es-lang="Referencia"
>Reference</a></li>
<li class="tools"><a href="../../../../../sdk/index.html"
zh-tw-lang="相關工具"
zh-cn-lang="工具"
ru-lang="Инструменты"
ko-lang="도구"
ja-lang="ツール"
es-lang="Herramientas"
>Tools</a></li>
<li class="google"><a href="../../../../../google/index.html"
>Google Services</a>
</li>
</ul>
</div>
</div>
<!-- /Sendondary x-nav DEVELOP -->
<div id="searchResults" class="wrap" style="display:none;">
<h2 id="searchTitle">Results</h2>
<div id="leftSearchControl" class="search-control">Loading...</div>
</div>
</div> <!--end header-wrapper -->
<div id="sticky-header">
<div>
<a class="logo" href="#top"></a>
<a class="top" href="#top"></a>
<ul class="breadcrumb">
<li class="current">ServiceTestRule</li>
</ul>
</div>
</div>
<div class="wrap clearfix" id="body-content">
<div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div id="devdoc-nav">
<div id="api-nav-header">
<div id="api-level-toggle">
<label for="apiLevelCheckbox" class="disabled"
title="Select your target API level to dim unavailable APIs">API level: </label>
<div class="select-wrapper">
<select id="apiLevelSelector">
<!-- option elements added by buildApiLevelSelector() -->
</select>
</div>
</div><!-- end toggle -->
<div id="api-nav-title">Android APIs</div>
</div><!-- end nav header -->
<script>
var SINCE_DATA = [ ];
buildApiLevelSelector();
</script>
<div id="swapper">
<div id="nav-panels">
<div id="resize-packages-nav">
<div id="packages-nav" class="scroll-pane">
<ul>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/package-summary.html">android.support.test</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/annotation/package-summary.html">android.support.test.annotation</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/package-summary.html">android.support.test.espresso</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/action/package-summary.html">android.support.test.espresso.action</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/assertion/package-summary.html">android.support.test.espresso.assertion</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/base/package-summary.html">android.support.test.espresso.base</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/contrib/package-summary.html">android.support.test.espresso.contrib</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/intent/package-summary.html">android.support.test.espresso.intent</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/intent/matcher/package-summary.html">android.support.test.espresso.intent.matcher</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/intent/rule/package-summary.html">android.support.test.espresso.intent.rule</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/matcher/package-summary.html">android.support.test.espresso.matcher</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/espresso/util/package-summary.html">android.support.test.espresso.util</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/filters/package-summary.html">android.support.test.filters</a></li>
<li class="selected api apilevel-">
<a href="../../../../../reference/android/support/test/rule/package-summary.html">android.support.test.rule</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/runner/package-summary.html">android.support.test.runner</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/runner/intent/package-summary.html">android.support.test.runner.intent</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/runner/lifecycle/package-summary.html">android.support.test.runner.lifecycle</a></li>
<li class="api apilevel-">
<a href="../../../../../reference/android/support/test/uiautomator/package-summary.html">android.support.test.uiautomator</a></li>
</ul><br/>
</div> <!-- end packages-nav -->
</div> <!-- end resize-packages -->
<div id="classes-nav" class="scroll-pane">
<ul>
<li><h2>Classes</h2>
<ul>
<li class="api apilevel-"><a href="../../../../../reference/android/support/test/rule/ActivityTestRule.html">ActivityTestRule</a></li>
<li class="selected api apilevel-"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></li>
<li class="api apilevel-"><a href="../../../../../reference/android/support/test/rule/UiThreadTestRule.html">UiThreadTestRule</a></li>
</ul>
</li>
</ul><br/>
</div><!-- end classes -->
</div><!-- end nav-panels -->
<div id="nav-tree" style="display:none" class="scroll-pane">
<div id="tree-list"></div>
</div><!-- end nav-tree -->
</div><!-- end swapper -->
<div id="nav-swap">
<a class="fullscreen">fullscreen</a>
<a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>
</div>
</div> <!-- end devdoc-nav -->
</div> <!-- end side-nav -->
<script type="text/javascript">
// init fullscreen based on user pref
var fullscreen = readCookie("fullscreen");
if (fullscreen != 0) {
if (fullscreen == "false") {
toggleFullscreen(false);
} else {
toggleFullscreen(true);
}
}
// init nav version for mobile
if (isMobile) {
swapNav(); // tree view should be used on mobile
$('#nav-swap').hide();
} else {
chooseDefaultNav();
if ($("#nav-tree").is(':visible')) {
init_default_navtree("../../../../../");
}
}
// scroll the selected page into view
$(document).ready(function() {
scrollIntoView("packages-nav");
scrollIntoView("classes-nav");
});
</script>
<div class="col-12" id="doc-col">
<div id="api-info-block">
<div class="sum-details-links">
Summary:
<a href="#pubctors">Ctors</a>
&#124; <a href="#pubmethods">Methods</a>
&#124; <a href="#promethods">Protected Methods</a>
&#124; <a href="#inhmethods">Inherited Methods</a>
&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
</div><!-- end sum-details-links -->
<div class="api-level">
</div>
</div><!-- end api-info-block -->
<!-- ======== START OF CLASS DATA ======== -->
<div id="jd-header">
public
class
<h1 itemprop="name">ServiceTestRule</h1>
extends Object<br/>
implements
TestRule
</div><!-- end header -->
<div id="naMessage"></div>
<div id="jd-content" class="api apilevel-">
<table class="jd-inheritance-table">
<tr>
<td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
</tr>
<tr>
<td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
<td colspan="1" class="jd-inheritance-class-cell">android.support.test.rule.ServiceTestRule</td>
</tr>
</table>
<div class="jd-descr">
<h2>Class Overview</h2>
<p itemprop="articleBody">A JUnit rule that provides a simplified mechanism to start and shutdown your service before
and after the duration of your test. It also guarantees that the service is successfully
connected when starting (or binding to) a service. The service can be started
(or bound) using one of the helper methods. It will automatically be stopped (or unbound) after
the test completes and any methods annotated with
<a href="http://junit.sourceforge.net/javadoc/org/junit/After.html"><code>After</code></a> are
finished.
<p>
Note: This rule doesn't support <code><a href="../../../../../reference/android/app/IntentService.html">IntentService</a></code> because it's automatically
destroyed when <code><a href="../../../../../reference/android/app/IntentService.html#onHandleIntent(android.content.Intent)">onHandleIntent(android.content.Intent)</a></code> finishes
all outstanding commands. So there is no guarantee to establish a successful connection
in a timely manner.
<p>
Usage:
<pre>
&#064;Rule
public final ServiceTestRule mServiceRule = new ServiceTestRule();
&#064;Test
public void testWithStartedService() {
mServiceRule.startService(
new Intent(InstrumentationRegistry.getTargetContext(), MyService.class));
//do something
}
&#064;Test
public void testWithBoundService() {
IBinder binder = mServiceRule.bindService(
new Intent(InstrumentationRegistry.getTargetContext(), MyService.class));
MyService service = ((MyService.LocalBinder) binder).getService();
assertTrue("True wasn't returned", service.doSomethingToReturnTrue());
}
</pre>
<p>
</p>
</div><!-- jd-descr -->
<div class="jd-descr">
<h2>Summary</h2>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#ServiceTestRule()">ServiceTestRule</a></span>()</nobr>
<div class="jd-descrdiv">
Creates a <code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></code> with a default timeout of <code><a href="../../../../../">.DEFAULT_TIMEOUT</a></code> seconds
</div>
</td></tr>
</table>
<!-- ========== METHOD SUMMARY =========== -->
<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
Statement</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#apply(org.junit.runners.model.Statement, org.junit.runner.Description)">apply</a></span>(Statement base, Description description)</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
IBinder</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#bindService(android.content.Intent, android.content.ServiceConnection, int)">bindService</a></span>(Intent intent, ServiceConnection connection, int flags)</nobr>
<div class="jd-descrdiv">
Starts the service under test, in the same way as if it were started by
<code><a href="../../../../../reference/android/content/Context.html#bindService(android.content.Intent, android.content.ServiceConnection, int)">Context.bindService(Intent, ServiceConnection, flags)</a></code> with an
<code><a href="../../../../../reference/android/content/Intent.html">Intent</a></code> that identifies a service.
</div>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
IBinder</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#bindService(android.content.Intent)">bindService</a></span>(Intent intent)</nobr>
<div class="jd-descrdiv">
Works just like
<code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#bindService(android.content.Intent, android.content.ServiceConnection, int)">bindService(android.content.Intent, android.content.ServiceConnection, int)</a></code> except
uses an internal <code><a href="../../../../../reference/android/content/ServiceConnection.html">ServiceConnection</a></code> to guarantee successful bound.
</div>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#startService(android.content.Intent)">startService</a></span>(Intent intent)</nobr>
<div class="jd-descrdiv">
Starts the service under test and blocks until the service is connected, in the same way as
if it were started by <code><a href="../../../../../reference/android/content/Context.html#startService(android.content.Intent)">Context.startService(Intent)</a></code> with an <code><a href="../../../../../reference/android/content/Intent.html">Intent</a></code> that identifies a
service.
</div>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
static
<a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#withTimeout(long, java.util.concurrent.TimeUnit)">withTimeout</a></span>(long timeout, TimeUnit timeUnit)</nobr>
<div class="jd-descrdiv">
Factory method to create a <code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></code> with a custom timeout
</div>
</td></tr>
</table>
<!-- ========== METHOD SUMMARY =========== -->
<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#afterService()">afterService</a></span>()</nobr>
<div class="jd-descrdiv">
Override this method to do your own service specific clean up after the service is shutdown.
</div>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#beforeService()">beforeService</a></span>()</nobr>
<div class="jd-descrdiv">
Override this method to do your own service specific initialization before starting or
binding to the service.
</div>
</td></tr>
</table>
<!-- ========== METHOD SUMMARY =========== -->
<table id="inhmethods" class="jd-sumtable"><tr><th>
<a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
<div style="clear:left;">Inherited Methods</div></th></tr>
<tr class="api apilevel-" >
<td colspan="12">
<a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
><img id="inherited-methods-java.lang.Object-trigger"
src="../../../../../assets/images/triangle-closed.png"
class="jd-expando-trigger-img" /></a>
From class
java.lang.Object
<div id="inherited-methods-java.lang.Object">
<div id="inherited-methods-java.lang.Object-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-methods-java.lang.Object-summary" style="display: none;">
<table class="jd-sumtable-expando">
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
Object</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">clone</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
boolean</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">equals</span>(Object arg0)</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">finalize</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
final
Class&lt;?&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">getClass</span>()</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
int</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">hashCode</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">notify</span>()</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">notifyAll</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
String</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">toString</span>()</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">wait</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">wait</span>(long arg0, int arg1)</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">wait</span>(long arg0)</nobr>
</td></tr>
</table>
</div>
</div>
</td></tr>
<tr class="api apilevel-" >
<td colspan="12">
<a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-org.junit.rules.TestRule" class="jd-expando-trigger closed"
><img id="inherited-methods-org.junit.rules.TestRule-trigger"
src="../../../../../assets/images/triangle-closed.png"
class="jd-expando-trigger-img" /></a>
From interface
org.junit.rules.TestRule
<div id="inherited-methods-org.junit.rules.TestRule">
<div id="inherited-methods-org.junit.rules.TestRule-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-methods-org.junit.rules.TestRule-summary" style="display: none;">
<table class="jd-sumtable-expando">
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
abstract
Statement</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">apply</span>(Statement arg0, Description arg1)</nobr>
</td></tr>
</table>
</div>
</div>
</td></tr>
</table>
</div><!-- jd-descr (summary) -->
<!-- Details -->
<!-- XML Attributes -->
<!-- Enum Values -->
<!-- Constants -->
<!-- Fields -->
<!-- Public ctors -->
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<h2>Public Constructors</h2>
<A NAME="ServiceTestRule()"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
public
</span>
<span class="sympad">ServiceTestRule</span>
<span class="normal">()</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Creates a <code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></code> with a default timeout of <code><a href="../../../../../">.DEFAULT_TIMEOUT</a></code> seconds
</p></div>
</div>
</div>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<!-- Protected ctors -->
<!-- ========= METHOD DETAIL ======== -->
<!-- Public methdos -->
<h2>Public Methods</h2>
<A NAME="apply(org.junit.runners.model.Statement, org.junit.runner.Description)"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
public
Statement
</span>
<span class="sympad">apply</span>
<span class="normal">(Statement base, Description description)</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p></p></div>
</div>
</div>
<A NAME="bindService(android.content.Intent, android.content.ServiceConnection, int)"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
public
IBinder
</span>
<span class="sympad">bindService</span>
<span class="normal">(Intent intent, ServiceConnection connection, int flags)</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Starts the service under test, in the same way as if it were started by
<code><a href="../../../../../reference/android/content/Context.html#bindService(android.content.Intent, android.content.ServiceConnection, int)">Context.bindService(Intent, ServiceConnection, flags)</a></code> with an
<code><a href="../../../../../reference/android/content/Intent.html">Intent</a></code> that identifies a service. However, it waits for
<code><a href="../../../../../reference/android/content/ServiceConnection.html#onServiceConnected(android.content.ComponentName, android.os.IBinder)">onServiceConnected(android.content.ComponentName, android.os.IBinder)</a></code> to be called before returning.</p></div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Parameters</h5>
<table class="jd-tagtable">
<tr>
<th>intent</td>
<td>Identifies the service to connect to. The Intent may
specify either an explicit component name, or a logical
description (action, category, etc) to match an
<code><a href="../../../../../reference/android/content/IntentFilter.html">IntentFilter</a></code> published by a service.</td>
</tr>
<tr>
<th>connection</td>
<td>Receives information as the service is started and stopped.
This must be a valid ServiceConnection object; it must not be null.</td>
</tr>
<tr>
<th>flags</td>
<td>Operation options for the binding. May be 0,
<code><a href="../../../../../reference/android/content/Context.html#BIND_AUTO_CREATE">BIND_AUTO_CREATE</a></code>,
<code><a href="../../../../../reference/android/content/Context.html#BIND_DEBUG_UNBIND">BIND_DEBUG_UNBIND</a></code>,
<code><a href="../../../../../reference/android/content/Context.html#BIND_NOT_FOREGROUND">BIND_NOT_FOREGROUND</a></code>,
<code><a href="../../../../../reference/android/content/Context.html#BIND_ABOVE_CLIENT">BIND_ABOVE_CLIENT</a></code>,
<code><a href="../../../../../reference/android/content/Context.html#BIND_ALLOW_OOM_MANAGEMENT">BIND_ALLOW_OOM_MANAGEMENT</a></code>, or
<code><a href="../../../../../reference/android/content/Context.html#BIND_WAIVE_PRIORITY">BIND_WAIVE_PRIORITY</a></code>.</td>
</tr>
</table>
</div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Returns</h5>
<ul class="nolist"><li>An object whose type is a subclass of IBinder, for making further calls into
the service.</li></ul>
</div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Throws</h5>
<table class="jd-tagtable">
<tr>
<th>SecurityException</td>
<td>if the called doesn't have permission to bind to the given service.</td>
</tr>
<tr>
<th>TimeoutException</td>
<td>if timed out waiting for a successful connection with the service.</td>
</tr>
</table>
</div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">See Also</h5>
<ul class="nolist"><li><code><a href="../../../../../reference/android/content/Context.html#BIND_AUTO_CREATE">BIND_AUTO_CREATE</a></code></li><li><code><a href="../../../../../reference/android/content/Context.html#BIND_DEBUG_UNBIND">BIND_DEBUG_UNBIND</a></code></li><li><code><a href="../../../../../reference/android/content/Context.html#BIND_NOT_FOREGROUND">BIND_NOT_FOREGROUND</a></code></li>
</ul>
</div>
</div>
</div>
<A NAME="bindService(android.content.Intent)"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
public
IBinder
</span>
<span class="sympad">bindService</span>
<span class="normal">(Intent intent)</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Works just like
<code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#bindService(android.content.Intent, android.content.ServiceConnection, int)">bindService(android.content.Intent, android.content.ServiceConnection, int)</a></code> except
uses an internal <code><a href="../../../../../reference/android/content/ServiceConnection.html">ServiceConnection</a></code> to guarantee successful bound.
The operation option flag defaults to <code><a href="../../../../../reference/android/content/Context.html#BIND_AUTO_CREATE">BIND_AUTO_CREATE</a></code></p></div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Throws</h5>
<table class="jd-tagtable">
<tr>
<th>TimeoutException</td>
<td></td>
</tr>
</table>
</div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">See Also</h5>
<ul class="nolist"><li><code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html#bindService(android.content.Intent, android.content.ServiceConnection, int)">bindService(android.content.Intent, android.content.ServiceConnection, int)</a></code></li>
</ul>
</div>
</div>
</div>
<A NAME="startService(android.content.Intent)"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
public
void
</span>
<span class="sympad">startService</span>
<span class="normal">(Intent intent)</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Starts the service under test and blocks until the service is connected, in the same way as
if it were started by <code><a href="../../../../../reference/android/content/Context.html#startService(android.content.Intent)">Context.startService(Intent)</a></code> with an <code><a href="../../../../../reference/android/content/Intent.html">Intent</a></code> that identifies a
service. If you use this method to start the service, it is automatically stopped at the
end of the test run. However, it also binds to the service and waits for
<code><a href="../../../../../reference/android/content/ServiceConnection.html#onServiceConnected(android.content.ComponentName, android.os.IBinder)">onServiceConnected(android.content.ComponentName, android.os.IBinder)</a></code> to be called to ensure successful connection.</p></div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Parameters</h5>
<table class="jd-tagtable">
<tr>
<th>intent</td>
<td>An Intent that identifies a service, of the same form as the Intent passed to
<code><a href="../../../../../reference/android/content/Context.html#startService(android.content.Intent)">Context.startService
(Intent)</a></code>.</td>
</tr>
</table>
</div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Throws</h5>
<table class="jd-tagtable">
<tr>
<th>SecurityException</td>
<td>if you do not have permission to bind to the given service.</td>
</tr>
<tr>
<th>TimeoutException</td>
<td>if timed out waiting for a successful connection with the service.
</td>
</tr>
</table>
</div>
</div>
</div>
<A NAME="withTimeout(long, java.util.concurrent.TimeUnit)"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a>
</span>
<span class="sympad">withTimeout</span>
<span class="normal">(long timeout, TimeUnit timeUnit)</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Factory method to create a <code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></code> with a custom timeout</p></div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Parameters</h5>
<table class="jd-tagtable">
<tr>
<th>timeout</td>
<td>the amount of time to wait for a service to connect.</td>
</tr>
<tr>
<th>timeUnit</td>
<td>the time unit representing how the timeout parameter should be interpreted</td>
</tr>
</table>
</div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Returns</h5>
<ul class="nolist"><li>a <code><a href="../../../../../reference/android/support/test/rule/ServiceTestRule.html">ServiceTestRule</a></code> with the desired timeout
</li></ul>
</div>
</div>
</div>
<!-- ========= METHOD DETAIL ======== -->
<h2>Protected Methods</h2>
<A NAME="afterService()"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
protected
void
</span>
<span class="sympad">afterService</span>
<span class="normal">()</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Override this method to do your own service specific clean up after the service is shutdown.
The method is called after each test method is executed including any method annotated with
<a href="http://junit.sourceforge.net/javadoc/org/junit/After.html"><code>After</code></a>
and after necessary calls to stop (or unbind) the service under test were called.
</p></div>
</div>
</div>
<A NAME="beforeService()"></A>
<div class="jd-details api apilevel-">
<h4 class="jd-details-title">
<span class="normal">
protected
void
</span>
<span class="sympad">beforeService</span>
<span class="normal">()</span>
</h4>
<div class="api-level">
<div></div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Override this method to do your own service specific initialization before starting or
binding to the service. The method is called before each test method is executed including
any method annotated with
<a href="http://junit.sourceforge.net/javadoc/org/junit/Before.html"><code>Before</code></a>.
Do not start or bind to a service from here!
</p></div>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<A NAME="navbar_top"></A>
<div id="footer" class="wrap" >
<div id="copyright">
Except as noted, this content is licensed under <a
href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
For details and restrictions, see the <a href="../../../../../license.html">
Content License</a>.
</div>
<div id="build_info">
Android &nbsp;r &mdash;
<script src="../../../../../timestamp.js" type="text/javascript"></script>
<script>document.write(BUILD_TIMESTAMP)</script>
</div>
<div id="footerlinks">
<p>
<a href="../../../../../about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
<a href="../../../../../legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
<a href="../../../../../support.html">Support</a>
</p>
</div>
</div> <!-- end footer -->
</div> <!-- jd-content -->
</div><!-- end doc-content -->
</div> <!-- end body-content -->
</body>
</html>