package com.mercandalli.android.apps.files.main;
import android.app.Application;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.multidex.MultiDexApplication;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
import com.mercandalli.android.apps.files.BuildConfig;
import com.mercandalli.android.apps.files.analytics.AnalyticsTrackers;
import com.mercandalli.android.library.base.main.BaseManager;
import java.lang.ref.WeakReference;
import io.fabric.sdk.android.Fabric;
/**
* The main {@link Application}.
*/
public class FileApp extends MultiDexApplication {
@NonNull
private static final String TAG = "FileApp";
@Nullable
private static FileApp sApplication;
private static long sTimeLaunch;
public static FileApp get() {
return sApplication;
}
@Override
public void onCreate() {
super.onCreate();
sTimeLaunch = System.currentTimeMillis();
sApplication = this;
logPerformance(TAG, "FileApp#onCreate()");
BaseManager.getInstance().initialize(
this,
Constants.GCM_SENDER);
logPerformance(TAG, "FileApp#onCreate() - Fabric Dagger");
final WeakReference<Context> contextWeakReference = new WeakReference<>(
getApplicationContext());
(new Thread() {
public void run() {
final Context context = contextWeakReference.get();
if (context == null) {
return;
}
// Fabric - Crashlytics.
Fabric.with(context, new Crashlytics());
// Google Analytics.
AnalyticsTrackers.initialize(context);
AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
}
}).start();
logPerformance(TAG, "FileApp#onCreate() - Fabric Fabric Analytics");
}
//region - Performance
public static void logPerformance(final String tag, final String message) {
if (!BuildConfig.DEBUG) {
return;
}
Log.d(getPerformanceTag(tag), "Performance \t\t- " + getPerformanceTime(
System.currentTimeMillis() - FileApp.sTimeLaunch) + " - " + message);
}
private static String getPerformanceTime(final long timeDiff) {
String result = String.valueOf(timeDiff);
int missingZero = 5 - result.length();
for (int i = 0; i < missingZero; i++) {
result = "0" + result;
}
return result;
}
private static String getPerformanceTag(final String tag) {
String result = tag;
int missingSpace = 21 - result.length();
for (int i = 0; i < missingSpace; i++) {
result = " " + result;
}
return result;
}
//endregion - Performance
}