/// <summary> /// Make basic Crasher initializations to handle exceptions from <see cref="Application"/> /// </summary> /// <param name="app"><see cref="Application"/> instance to monitor for exceptions.</param> public static void Initialize(Application app) { if (_application != null) { throw new InvalidOperationException("CrashReporter# init called more than once"); } _application = app; _config = app.GetType().GetCustomAttributes(typeof(CrasherAttribute), false).FirstOrDefault() as CrasherAttribute; if (_config == null) { Log.Error(Constants.LOG_TAG, "CrashReporter# init called but no CrasherAttribute on Application class " + _application.PackageName); return; } Log.Debug(Constants.LOG_TAG, "CrasherAttribute is enabled for " + _application.PackageName + ", intializing..."); _exceptionProcessor = new ExceptionProcessor(_application.ApplicationContext, _config.ReportContent ?? DefaultReportFields); if (_config.UseCustomData && _config.CustomDataProviders != null) { foreach (var customDataProvider in _config.CustomDataProviders) { _exceptionProcessor.AddCustomReportDataProvider(Activator.CreateInstance(customDataProvider) as ICustomReportDataProvider); } } }
/// <summary> /// Stop proccessing application exceptions /// </summary> public static void Stop() { if (_exceptionProcessor != null) { _exceptionProcessor.Dispose(); } _exceptionProcessor = null; _config = null; _application = null; }