package com.florianmski.tracktoid;
import android.app.Application;
import android.os.StrictMode;
import com.crashlytics.android.Crashlytics;
import com.florianmski.tracktoid.data.database.ProviderSchematic;
import com.florianmski.tracktoid.trakt.TraktManager;
import io.fabric.sdk.android.Fabric;
import timber.log.Timber;
public class TraktoidApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
ProviderSchematic.init(getApplicationContext());
TraktoidPrefs.create(getApplicationContext());
TraktManager.create(getApplicationContext());
if(BuildConfig.DEBUG)
{
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
Timber.plant(new Timber.DebugTree());
}
else
{
Fabric.with(this, new Crashlytics());
if(TraktoidPrefs.INSTANCE.isUserLoggedIn())
Crashlytics.setUserName(TraktoidPrefs.INSTANCE.getUsername());
Timber.plant(new CrashReportingTree());
}
}
private static class CrashReportingTree extends Timber.HollowTree
{
@Override
public void i(String message, Object... args)
{
Crashlytics.log(String.format(message, args));
}
@Override
public void i(Throwable t, String message, Object... args)
{
i(message, args); // Just add to the log.
}
@Override
public void e(String message, Object... args)
{
i("ERROR: " + message, args); // Just add to the log.
}
@Override
public void e(Throwable t, String message, Object... args)
{
e(message, args);
Crashlytics.logException(t);
}
}
@Override
public void onLowMemory() {}
}