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:
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;
}
}