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(). 
 
     
     
    