I am trying to log the start up latency of my app. They way I am doing it is setting the start time of the app on Application.onCreate
and provide a public method that returns the time.
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)):
}
This is how I am testing my start up latency:
- adb install myapk
- run the app to get the first start up latency. I can see the latency logged is correct for the first start
- run the app again to test the start latency. The latency logged is correct for the start(or any number of subsequent starts)
- Now I increase my app's version code and name by 1. To simulate an upgrade, I used the command adb install -r myapk.
- Now I run the app again to test the first start latency after upgrade, even though it takes 3 seconds, the latency logged is off the charts.
Does any one know why that might happen?
Update
So if I install the apk using "adb install -r myapk", the app isn't going through the Myapplication.onCreate()
.