У меня очень странная проблема, и мне нужна помощь в решении.Это связано с длительным временем холодного запуска.Это означает, что моему приложению требуется много времени для запуска и отображения в первый раз.Я посмотрел на устранение неполадок, учитывая материал, приведенный здесь:
https://developer.android.com/topic/performance/vitals/launch-time
Все очень полезно, но я попробовал что-то другое.Когда наша система находится под большой нагрузкой, это когда я вижу проблемы времени запуска.Я пытался разделить всю деятельность на только запуск, без рисования / раздувания взглядов, как никогда.Буквально только запуск базовой активности.Я вижу время холодного старта в среднем 1,45 с.Вы можете подумать, что это нормально, но у нас есть другие приложения, которые имеют полную реализацию и фактическое наполнение представлений / виджетов, данных и т. Д., Для запуска которых требуется всего 1,17 с.Это очень смущает меня, так как у меня буквально только активность (та же самая тема android).Какие еще вещи я должен искать?Почему это займет так много времени, чтобы начать?
Обратите внимание, что действие, с которым я сравниваю его, построено с использованием Gradle, а я использую Maven.Наши манифесты для Android одинаковы с точки зрения использования атрибутов.
Я также пытался запустить процесс уже перед запуском действия (создал фиктивный сервис при загрузке), но реального времени запуска не было.Я нахожусь на Android 4.3.1 и подтверждаю время запуска, просматривая запись ActivityManager в logcat.Может быть, проблема с загрузкой ресурса?Это должно быть что-то со сборкой, так как нет причины, по которой для запуска простой операции требуется больше времени, чем для более сложной.
РЕДАКТИРОВАТЬ: добавление кода
Вот манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="11" android:versionName="debug-11" package="com.my.app">
<uses-permission android:name="com.cnh.android.permission.ACCESS_SETTINGS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- uses-sdk is updated automatically by pom.xml -->
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18"/>
<application android:allowBackup="true" android:debuggable="false" android:icon="@drawable/ic_tab" android:label="@string/app_name" android:name=".App" android:theme="@style/AppTheme">
<activity android:label="@string/app_name" android:launchMode="singleInstance" android:name=".MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
Код приложения:
package com.my.app;
import android.app.Application;
import android.content.Context;
/**
* base App class used for application
*/
public class App extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
setContext(this);
}
private static void setContext(Context ctx) {
context = ctx;
}
public static Context getContext() {
return context;
}
}
Код активности:
package com.my.app;
import android.app.Activity;
import android.os.Bundle;
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Как я уже сказал, супер базовый / скелет.