TpoM6oH
TpoM6oH

Reputation: 8595

Calculate time of loading of an android app from the very start to the moment when views become interactive and clickable

I need to calculate the time taken by my app to start. Do you have any ideas when to start and when to stop timing?

Upvotes: 0

Views: 1690

Answers (2)

Jim
Jim

Reputation: 10288

To do this, you probably should be clear on what "start my app" means - if you are referring to an activity, then you should probably override the Activity constructor (not "onCreate" except in most cases there isn't any measurable time from the constructor before onCreate is called) and capture:

SystemClock.upTimeMillis()

then you need to create a listener for onGlobalLayout to determine when the activity is actually finished displaying on the screen and get the upTime again. For the listener, do it like in this post:

Activity lifecycle - receiving notification that layout is complete

And then take the difference between the times... however, that is really the "activity" startup time.

If you are certain your app is not running, and you want to see how long it takes to "start your app" when it is not loaded in memory at all, you should extend the Application class:

public class MyApp extends Application {
    public MyApp() {
        // get the time
    }
}

and then override the constructor to capture the timestamp like above and store it. Your app's application class is constructed first, then activities are instantiated.

Then capture the listener time in the first activity to display, as mentioned above. That will probably tell you best how much time it took from when your app "starts" to when the user actually could see it.

There are a few things that happen between when a user action occurs that is intended to "start your app" that are not included, but you have no control over that, even though that should be included if you are trying to measure how long it takes from the user's perspective.

Upvotes: 1

Neige
Neige

Reputation: 2840

Use your timer at the beginning of oncreate() and stop it at the end of onResume(). According to lifecycle of an Activity.

Upvotes: 2

Related Questions