2016-06-10 30 views
5

Sono estremamente curioso come c'è 0 codice scritto all'interno dell'applicazione e tutto ciò che è necessario è quello di utilizzare la libreriaCome fa Firebase incidente segnalazione inizializzo

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

al fine di ottenere Firebase incidente di lavoro di reporting. L'inizializzazione è sempre una cosa come quella in cui la classe dell'applicazione 'onCreate viene sempre chiamata solo una volta?

Cosa devo fare se voglio consentire incidente riportando solo dopo un certo evento?

risposta

6

Aggiornamento: V'è ora un post sul blog complete su how Firebase components initialize.

Firebase riporto di un crash (in aggiunta ad altri componenti Firebase) inizializzare in un ContentProvider che è incluso nella vostra applicazione automaticamente. I ContentProvider vengono prima istanziati, quindi la sottoclasse dell'applicazione, quindi qualsiasi componente è stato richiamato (Attività, Servizio, BroadcastReceever).

Quando il progetto dipende da un progetto di libreria Android (file aar), tutte le voci manifest vengono unite nella tua app, quindi ottieni questo ContentProvider gratuitamente dichiarando la dipendenza da firebase-crash.

ho tenuto una conferenza al Google I/O 2016 su come funziona tutto questo. Jump to 16:22 per l'inizio del contenuto specifico per i rapporti sugli arresti anomali.

Purtroppo al momento non c'è modo per consentire di programmazione o disattivare la segnalazione crash, ma che è in arrivo.

+0

Sarò sicuro di dare un'occhiata! Quindi anche i provider vengono inizializzati solo una volta? Dal tuo commento assumerei così – gaara87

+0

Sì, tutti i ContentProvider passano attraverso onCreate() solo una volta all'inizio del processo principale. –

+0

Ho appena visto il video, lo spiega perfettamente, grazie! Il motivo per cui stavo chiedendo è di vedere se esiste un'alternativa al posizionamento del codice di inizializzazione dell'app da qualche altra parte rispetto a Subcass dell'applicazione semplicemente per ridurre il tempo di avvio a freddo. Suppongo che inizializzarlo nei content provider non aiuterebbe nella riduzione giusta? – gaara87

0

Quindi, in pratica, quando utilizzo Firebase Crash Reporting, sono costretto a eseguire l'inizializzazione in ContentProvider. La mia app ha 2 processi a causa di questo e se faccio init in Application.onCreate allora si chiama due volte - una volta per ogni processo. Ma ad altri processi non interessa il mio codice di init, quindi non voglio farlo due volte. Quindi posso usare uno ContentProvider o controllare il nome del processo corrente. O forse c'è qualcos'altro che mi manca?