Example #1
0
        /// <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);
                }
            }
        }
Example #2
0
 /// <summary>
 /// Stop proccessing application exceptions
 /// </summary>
 public static void Stop()
 {
     if (_exceptionProcessor != null)
     {
         _exceptionProcessor.Dispose();
     }
     _exceptionProcessor = null;
     _config             = null;
     _application        = null;
 }