Android App ersten Start ist sehr langsam und systrace zeigt 30 Sekunden bindApplication

Ich entwickle gerade eine Android-App und versuche, die Startzeit zu verbessern. Dazu benutze ich das Systrace tool.

Wenn ich die App zum ersten Mal starte (direkt nach der Installation), dauert der Start ca. 40 Sekunden, und ich erhalte den folgenden Trace:

ie Sie sehen können, gibt es einen 30 Sekunden hellvioletten Tag mit dem TitelbindApplication.

Nachdem schließe ich die App (von den letzten Aktivitäten entfernt) und öffne sie erneut. Diesmal dasbindApplication tag ist nur 4 Sekunden lang:

Weiß jemand, ob es normal ist, dass der erste Lauf so lange dauert?Was kann ich tun, um es zu verbessern?

Meine Vermutung hier ist dasbindApplication hängt irgendwie mit schwerer Arbeit im @ zusammonCreate App Methode, aber ich sehe nicht, wie das passieren könnte. Nur für den Fall, es hilft: in meinemonCreate Ich initialisiere die folgenden Bibliotheken: Parse, Crashlytics, Timber, ParseFacebookUtils und Google Analytics.

BEARBEITEN

Hier ist der App-Unterklassencode:

public class MyApp extends Application {

  private Tracker tracker;

  @Override public void onCreate() {
    super.onCreate();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
      Trace.beginSection("MyApp");
    }
    Fabric.with(this, new Crashlytics());

    // Parse setup
    Parse.enableLocalDatastore(this);
    ParseObject.registerSubclass( ... );

    Parse.Configuration.Builder parseConfigBuilder = new Parse.Configuration.Builder(this).applicationId(
        getString(R.string.parse_application_id))
        .server(getString(R.string.parse_server_url));

    if (BuildConfig.DEBUG) {
      // add logs
      Timber.plant(new DebugTree());
      Parse.setLogLevel(Parse.LOG_LEVEL_VERBOSE);
      parseConfigBuilder.addNetworkInterceptor(new ParseLogInterceptor());
    }

    Parse.initialize(parseConfigBuilder.build());

    ParseFacebookUtils.initialize(this);

    ParseInstallation.getCurrentInstallation().saveInBackground();

    AnalyticsManager.getInstance().init(this);
    AnalyticsManager.getInstance().debugMode(BuildConfig.DEBUG);

    if (BuildConfig.DEBUG) {
      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
          .detectAll()
          .penaltyLog()
          .build());
      StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().
          detectAll()
          .penaltyLog()
          .build());
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
      Trace.endSection();
    }
  }

  /**
   * Gets the default {@link Tracker} for this {@link Application}.
   * @return tracker
   */
  synchronized public Tracker getDefaultTracker() {
    if (tracker == null) {
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
      tracker = analytics.newTracker(R.xml.global_tracker);
    }
    return tracker;
  }
}