diff options
Diffstat (limited to 'files/de/mozilla/tech/xpcom/guide')
-rw-r--r-- | files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html | 56 | ||||
-rw-r--r-- | files/de/mozilla/tech/xpcom/guide/index.html | 13 |
2 files changed, 69 insertions, 0 deletions
diff --git a/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html b/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html new file mode 100644 index 0000000000..a81f28519f --- /dev/null +++ b/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html @@ -0,0 +1,56 @@ +--- +title: Empfang von Benachrichtigungen zum Startprozeß +slug: Mozilla/Tech/XPCOM/Guide/empfang_von_benachrichtigungen_zum_startprozess +translation_of: Mozilla/Tech/XPCOM/Guide/Receiving_startup_notifications +--- +<p>Manchmal brauchen XPCOM Komponenten Benachrichtigungen über den Fortschritt beim Hochfahren der Anwendung, zum Beispiel um neue Dienste zur passenden Zeit starten können</p> +<h2 id="Empfang_von_Benachrichtigungen_zum_Startprozeß_ab_Gecko_2.0_(Firefox_4)">Empfang von Benachrichtigungen zum Startprozeß ab Gecko 2.0 (Firefox 4)</h2> +<p>Der XPCOM Startprozeß wurde verändert um die zum Hochfahren benötigte Zeit zu verbessern. Siehe <a href="#der_startprozess">Der Startprozeß</a> für Details über die Funktionsweise, wenn dich die Einzelheiten interessieren.</p> +<p>Die entscheidende Änderung ist, daß man jetzt entsprechende Zeilen zum <a href="/en/Chrome_registration" title="en/Chrome registration"><code>chrome.manifest</code></a> hinzufügt damit die Anwendung sich darum kümmert, anstelle die Registrierung programmatisch mit dem Category Manager durchzuführen wie früher. Zum Beispiel:</p> +<pre>category profile-after-change MyComponent @foobar/mycomponent;1</pre> +<div class="warning"> + <strong>Wichtig:</strong> Bisher begann die Contract ID des Kategorie-EIntrags mit "service," wenn die Komponente als Dienst (Service) implementiert war. Das ist nicht länger der Fall, dieses muß bei der Codemigration entfernt werden..</div> +<p>Hinzu kommt, daß die früheste Benachrichtigung beim Startprozeß, die man erhalten kann, jetzt <code>profile-after-change</code> ist. Dein Add-On wird keine <code><code>xpcom-startup</code></code> oder <code>app-startup</code> Benachrichtigungen mehr erhalten.</p> +<h3 id="Der_Startprozeß"><a name="der_startprozess">Der Startprozeß</a></h3> +<p>Während des Startprozesses wird aus dem Manifest der Anwendung die Liste der Komponenten ausgelesen, die registriert werden müssen, und diese Komponenten werden dann gestartet. Damit sind dann XPCOM und die Anwendung soweit hochgefahren, daß der Erweiterungs-Manager geladen werden kann, um sich um Installation, Deinstallation und Aktualisierung von Erweiterungen zu kümmern.</p> +<p>Sobald dieser Prozess abgeschlossen ist, können Erweiterungen einfach dadurch geladen werden, daß ihr Manifest gelesen, ihre Komponenten geladen und der Anwendungsstart fortgesetzt wird, ohne den Browser neu starten zu müssen.</p> +<h2 id="Empfang_von_Benachrichtigungen_zum_Startprozeß_vor_Gecko_2.0_(Firefox_4)">Empfang von Benachrichtigungen zum Startprozeß vor Gecko 2.0 (Firefox 4)</h2> +<p>Um Benachrichtigungen zum Startprozeß zu empfangen muß man {{ interface("nsICategoryManager") }} benutzen um sich für die "app-startup" Kategorie zu registrieren. Damit wird die Komponente dann unter anderem folgende Benachrichtigungen zum Anwendungsstart erhalten:</p> +<dl> + <dt> + <code>xpcom-startup</code></dt> + <dd> + Wird gesendet, wenn XPCOM fertig mit dem Hochfahren ist. Die meisten Anwendungsdienste sind dann noch nicht verfügbar, aber XPCOM selbst steht bereit.</dd> + <dt> + <code>app-startup</code></dt> + <dd> + Wird gesendet, wenn die Anwendung mit dem Startprozess fertig ist.</dd> + <dt> + <code>final-ui-startup</code></dt> + <dd> + Wird gesendet eben bevor das erste Anwendungsfenster dargestellt wird.</dd> +</dl> +<h3 id="Registrierung_am_Kategorien-Manager">Registrierung am Kategorien-Manager</h3> +<p>Um sich beim Kategorien-Manager anzumelden, muß man nur dessen Methode {{ ifmethod("nsICategoryManager", "AddCategoryEntry") }} aufrufen:</p> +<pre>categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY, + "mycomponentname", + "contract-id", + PR_TRUE, PR_TRUE, + getter_Copies(previous)); +</pre> +<p>Das bewirkt, daß die Komponente mit {{ ifmethod("nsIComponentManager","createInstance") }} instanziiert wird.</p> +<p>Wenn die Komponente als Dienst (Service) laufen soll, laß die Contract ID mit "service," beginnen:</p> +<pre>categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY, + "mycomponentname", + "service,contract-id", + PR_TRUE, PR_TRUE, + getter_Copies(previous));</pre> +<p>Wenn "service," angegeben ist, wird die Komponente mit {{ ifmethod("nsIComponentManager","getService") }} instanziiert.</p> +<p>In beiden Fällen braucht man keine weitere Registrierung für die Benachrichtigungen zum Startprozeß, die Registrierung am Kategorien-Manager reicht dazu aus.</p> +<h3 id="Wie_es_weitergeht">Wie es weitergeht</h3> +<p>Nachdem die Registrierung am Kategorien-Manager erfolgt ist, wird zum Zeitpunkt des Starts von Mozilla (oder wenn bei einer eingebetteten Anwendung die Funktion <code>NS_InitEmbedding()</code> aufgerufen wurde) die AppStartupNotifier Komponente instanziiert und ihre <code>Observe()</code> Methode aufgerufen; Diese wiederum läuft über alle Komponenten in der <code>app-startup</code> Kategorie und sendet ihnen die passenden Benachrichtigungen.</p> +<h2 id="Siehe_auch">Siehe auch</h2> +<ul> + <li>{{ interface("nsICategoryManager") }}</li> + <li><a href="/en/Observer_Notifications" title="en/Observer Notifications">Observer Notifications</a></li> +</ul> diff --git a/files/de/mozilla/tech/xpcom/guide/index.html b/files/de/mozilla/tech/xpcom/guide/index.html new file mode 100644 index 0000000000..781a596b2e --- /dev/null +++ b/files/de/mozilla/tech/xpcom/guide/index.html @@ -0,0 +1,13 @@ +--- +title: XPCOM guide +slug: Mozilla/Tech/XPCOM/Guide +tags: + - Landing + - Mozilla + - NeedsTranslation + - TopicStub + - XPCOM +translation_of: Mozilla/Tech/XPCOM/Guide +--- +<p><span class="seoSummary">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</span></p> +<p>{{LandingPageListSubpages}}</p> |