2016-06-10 10 views
5

ich sehr neugierig bin, wie es 0 Code innerhalb der Anwendung geschrieben ist und alles, was erforderlich ist, ist die BibliothekWie funktioniert Firebase Absturz initialisieren Berichterstattung

compile 'com.google.firebase:firebase-crash:9.0.1' 

zu verwenden, um Feuerbasis Absturzberichte zum Laufen zu bringen. Ist die Initialisierung immer eine einmalige Sache, so wie die Applikationsklasse onCreate immer nur einmal aufgerufen wird?

Was mache ich, wenn ich die Absturzmeldung erst nach einem bestimmten Ereignis aktivieren möchte?

Antwort

6

Update: Es gibt jetzt einen umfassenden Blogpost über how Firebase components initialize.

Firebase-Absturzberichte werden (zusätzlich zu anderen Firebase-Komponenten) in einem ContentProvider initialisiert, der automatisch in Ihre App integriert wird. Zuerst werden ContentProvider instanziiert, dann die Anwendungsunterklasse und dann die Komponente, die aufgerufen wurde (Activity, Service, BroadcastReciever).

Wenn Ihr Projekt von einem Android-Bibliotheksprojekt (aar-Datei) abhängt, werden alle Manifesteinträge in Ihre App zusammengeführt. Sie erhalten diesen ContentProvider also kostenlos, indem Sie die Abhängigkeit vom Firebase-Absturz deklarieren.

Ich habe bei Google I/O 2016 darüber gesprochen, wie das alles funktioniert. Jump to 16:22 für den Beginn des Inhalts für Crash-Reporting.

Leider gibt es derzeit keine Möglichkeit, Absturzberichte programmatisch zu aktivieren oder zu deaktivieren, aber das kommt bald.

+0

Ich werde sicher sein, es zu überprüfen! Werden Provider auch nur einmal initialisiert? Von Ihrem Kommentar würde ich das so annehmen – gaara87

+0

Ja, alle ContentProvider durchlaufen onCreate() nur einmal am Anfang des Hauptprozesses. –

+0

Ich habe gerade das Video angeschaut, erklärt es perfekt, danke! Der Grund, warum ich gefragt habe, ist zu sehen, ob es eine Alternative gibt, um App-Initialisierungscode irgendwo anders als Anwendung sublcass zu setzen, um die kalte Startzeit einfach zu reduzieren. Ich nehme an, die Initialisierung in Content-Providern würde nicht helfen, das Recht zu reduzieren. – gaara87

0

Also im Grunde, wenn ich Firebase Crash Reporting verwende, bin ich gezwungen, die Initialisierung in ContentProvider zu tun. Meine App hat deswegen 2 Prozesse und wenn ich in Application.onCreate init, dann wird es zweimal aufgerufen - einmal für jeden Prozess. Aber andere Prozesse kümmern sich nicht um meinen Init-Code, also möchte ich es nicht zweimal machen. So kann ich einen ContentProvider verwenden oder den aktuellen Prozessnamen überprüfen. Oder gibt es noch etwas, das ich vermisse?