<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=V-Turn</id>
	<title>Official Kodi Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=V-Turn"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/view/Special:Contributions/V-Turn"/>
	<updated>2026-07-02T03:50:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Service_add-ons&amp;diff=131267</id>
		<title>Service add-ons</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Service_add-ons&amp;diff=131267"/>
		<updated>2017-11-27T20:27:05Z</updated>

		<summary type="html">&lt;p&gt;V-Turn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Service addons will be automatically started when Kodi starts. These addons must offer the &#039;&#039;&#039;xbmc.service&#039;&#039;&#039; extension point. You can specify when you want your addon to start, using the &#039;&#039;&#039;start&#039;&#039;&#039; tag. If it&#039;s isn&#039;t here, your addon will automatically start after user login. If you want it to start on Kodi startup, you need to set the &#039;&#039;&#039;start&#039;&#039;&#039; tag to &#039;&#039;startup&#039;&#039;. Here&#039;s a typical example of the addon.xml the addon needs to provide:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;addon id=&amp;quot;service.example&amp;quot;&lt;br /&gt;
       name=&amp;quot;Example service&amp;quot;&lt;br /&gt;
       version=&amp;quot;1.0.0&amp;quot;&lt;br /&gt;
       provider-name=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;requires&amp;gt;&lt;br /&gt;
    &amp;lt;import addon=&amp;quot;xbmc.python&amp;quot; version=&amp;quot;2.1.0&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/requires&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.service&amp;quot; library=&amp;quot;service.py&amp;quot; start=&amp;quot;login&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;extension point=&amp;quot;xbmc.addon.metadata&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;platform&amp;gt;all&amp;lt;/platform&amp;gt;&lt;br /&gt;
    &amp;lt;summary lang=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;
  &amp;lt;/extension&amp;gt;&lt;br /&gt;
&amp;lt;/addon&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your addon is meant to be run while Kodi is running, you need to periodically check if Kodi is exiting. The addon is responsible for terminating when Kodi wants to exit. This can be checked by creating a &amp;lt;code&amp;gt;xbmc.Monitor&amp;lt;/code&amp;gt; instance and calling the &amp;lt;code&amp;gt;abortRequested()&amp;lt;/code&amp;gt; method. To wait for this event instead, call &amp;lt;code&amp;gt;waitForAbort()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Example service that prints &amp;quot;hello addon!&amp;quot; every 10 second until Kodi exits:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import time&lt;br /&gt;
import xbmc&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    monitor = xbmc.Monitor()&lt;br /&gt;
    &lt;br /&gt;
    while not monitor.abortRequested():&lt;br /&gt;
        # Sleep/wait for abort for 10 seconds&lt;br /&gt;
        if monitor.waitForAbort(10):&lt;br /&gt;
            # Abort was requested while waiting. We should exit&lt;br /&gt;
            break&lt;br /&gt;
        xbmc.log(&amp;quot;hello addon! %s&amp;quot; % time.time(), level=xbmc.LOGNOTICE)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gotham and earlier ==&lt;br /&gt;
&amp;lt;code&amp;gt;abortRequested()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;waitForAbort()&amp;lt;/code&amp;gt; are new in Helix. In Gotham and earlier, use &amp;lt;code&amp;gt;xbmc.sleep&amp;lt;/code&amp;gt; and check the &amp;lt;code&amp;gt;xbmc.abortRequested&amp;lt;/code&amp;gt; attribute periodically.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import xbmc&lt;br /&gt;
 &lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    while not xbmc.abortRequested:&lt;br /&gt;
        # some code&lt;br /&gt;
        xbmc.sleep(500)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:How-to]]&lt;br /&gt;
[[Category:Add-on development]]&lt;/div&gt;</summary>
		<author><name>V-Turn</name></author>
	</entry>
</feed>