2015-07-02 7 views
9

Ho un'applicazione che avvia il servizio Android in un processo separato. Con questo mezzo sono in esecuzione due processi. Uno è la mia applicazione principale e un altro è il servizio.Crittercism non funziona su servizio Android con processo separato

Ora ho provato ad integrare crittercism (è uno strumento di gestione delle prestazioni delle applicazioni mobili) in approcci di seguito, ma non è in grado di generare il registro degli arresti anomali per il servizio.

  1. Integrare crittercism solo in app.

    Risultato: genera il registro degli arresti anomali solo per l'app, non per il servizio.

  2. Integrare il crittercism in servizio nel metodo onCreate().

    Risultato: Non mostra il registro degli arresti anomali e inoltre non mostra il carico dell'app nelle statistiche live.

  3. Integrare crittercism in entrambe le app e il servizio.

    Risultato: genera il registro degli arresti anomali solo per l'app e non per il servizio.

Quindi, come posso ottenere il registro degli arresti anomali per il servizio Android?

Ecco il codice con cui ho implementato:

MainApplication.java

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Crittercism.initialize(getApplicationContext(), "CRITTERCISM_APP_ID"); 
} 

MyService.java

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Crittercism.initialize(getApplicationContext(), "CRITTERCISM_APP_ID"); // Same app id which is used for MainApplication.java 
} 

build.gradle di file di entrambi servizio e applicazione principale:

dependencies { 
    compile 'com.crittercism:crittercism-android-agent:5.0.6' 
} 

aggiunto anche sotto l'autorizzazione sia per il servizio e l'applicazione principale

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
+0

# 3 dovrebbe essere la risposta giusta, in quanto sarebbe necessario impostare questa roba in entrambi i processi. Potresti considerare di postare il tuo codice dove configuri Crittercism, e forse possiamo suggerire alcune modifiche. – CommonsWare

+0

@CommonsWare Ho aggiornato la mia domanda con il codice ... – Sanket

+0

Ehi lì - uno dei fondatori di Crittercism qui, puoi inviare una nota a [email protected]? – crittercismrob

risposta

4

ho ricevuto risposta da comunità Crittercism e sotto è la loro risposta:

The crashes cannot be captured in a remote service and because its Android issue. We also do not count app loads in remote services but other data is collected: HE, Network, etc. Crittercism counts actual app loads only. 

One possible work around is to manually wrap all of the top level methods in the service in a try/catch block. In the catch block, use Crittercism.logHandledException. 

Here's an example: 

try { 
customersTopLevelMethod(); 
} catch (Throwable t) { 
Crittercism.logHandledException(t); 

// You probably want to rethrow the exception since the service will now 
// be in an invalid state. 
throw t; 
} 

Ecco il link troppo - http://community.crittercism.com/questions/1210/crittercism-not-working-on-android-service-with-se.html#answer-1217