Первый запуск Android-приложения очень медленный, а systrace показывает 30 секунд bindApplication

В настоящее время я занимаюсь разработкой приложения для Android и пытаюсь улучшить время запуска. Для этого я используюSystrace инструмент.

Первый раз, когда я запускаю приложение (сразу после установки), для запуска требуется ~ 40 секунд, и я получаю следующую трассировку:

Как видите, на 30 секунд светло-фиолетовый тег с заголовкомbindApplication.

После этого я закрываю приложение (удалено из недавних действий) и снова открываю его. На этот разbindApplication тег длиной всего 4 секунды:

Кто-нибудь знает, нормально ли, чтобы первый запуск длился так долго?Что я могу сделать, чтобы улучшить это?

Я предполагаю, чтоbindApplication как-то связано с тяжелой работой вonCreate Метод приложения, но я не понимаю, как это могло произойти. На всякий случай это помогает: по моемуonCreate Я инициализирую следующие библиотеки: Parse, Crashlytics, Timber, ParseFacebookUtils и Google Analytics.

РЕДАКТИРОВАТЬ:

Вот код подкласса приложения:

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;
  }
}
 FlyingPumba16 июл. 2016 г., 07:13
@AADTechnical Я просто инициализирую упомянутые библиотеки, код больше не выполняется.
 AADProgramming16 июл. 2016 г., 07:15
Я думаю, вам нужно показать код, где вы делаете все эти инициализации. Трудно догадаться, не глядя на код, где есть проблемы с производительностью ...
 FlyingPumba16 июл. 2016 г., 07:22
@AADTechnical Вы правы, я только добавил это.
 AADProgramming16 июл. 2016 г., 07:07
доonCreate Launcher Activity вашего приложения, выполняется код класса subclassed-Application. Есть ли у вас инициализация или какой-либо другой долго работающий код внутри вашего класса Application? Может быть, это также 1 область, где вы можете посмотреть на производительность ...

Ответы на вопрос(1)

Решение Вопроса

и я решаю, если отключить мгновенный запуск. Здесь тот же вопрос, и вы можете найти свой ответ в комментарии вопроса.

Первый запуск занимает много времени (ClassLoader ссылается на неизвестный путь)

 Jaydeep Devda16 июл. 2016 г., 08:13
спасибо, ищу этот ответ.
 FlyingPumba16 июл. 2016 г., 07:35
Ничего себе, я ненавижу Мгновенный запуск так много прямо сейчас. Спасибо !

Ваш ответ на вопрос