Sto cercando di registrare la latenza di avvio di mia app. Il modo in cui lo sto facendo è impostare l'ora di inizio dell'app su Application.onCreate
e fornire un metodo pubblico che restituisca l'ora.Android - Problemi con la registrazione della messa in latenza
MyApplication extends Application {
Date startUpTime;
//Declare variables
@Override
public void onCreate() {
super.onCreate();
setStartupTime();
//other initializations
}
private void setStartUpTime() {
startUpTime = new Date();
}
public Date getStartUpTime() {
return startUpTime;
}
}
MyActivity extends Activity {
.
.
.
@Override
public void onStart(){
logStartUpLatency();
//other onStart stuff
}
private void logStartUpLatency() {
Date currentTime = new Date();
Date startTime = (MyApplication)getApplicationContext().getStartUpTime();
long latency = currentTime.getTime() - startTIme.getTime();
Log.d("Start up Latency is ", Long.toString(latency)):
}
Questo è come mi sto testando il mio avvio di latenza:
- adb install myapk
- eseguire l'applicazione per ottenere il primo latenza di avvio. Posso vedere la latenza registrato è corretto per il primo avvio
- eseguire nuovamente l'applicazione per testare la latenza di avvio. La latenza registrata è corretta per l'inizio (o qualsiasi numero di avviamenti successivi)
- Ora aumento il codice di versione e il nome della mia app per 1. Per simulare un aggiornamento, ho usato il comando adb install -r myapk.
- Ora eseguo di nuovo l'app per testare la prima latenza di avvio dopo l'aggiornamento, anche se sono necessari 3 secondi, la latenza registrata è fuori dai grafici.
Se uno sa il motivo che potrebbe succedere?
Aggiornamento
Quindi, se installo l'apk utilizzando "adb install myapk -r", l'applicazione non sta andando attraverso il Myapplication.onCreate()
.