protected override void OnHandleIntent(Intent intent)
        {
            if (LocationClient.HasError(intent))
            {
                Log.Debug(TAG, "Location Services error");
                StartActivity(new Intent(this, typeof (AlarmErrorScreen)).AddFlags(ActivityFlags.NewTask));
            }
            else
            {
                Log.Debug(TAG, "Location Services success");

                var geofences = LocationClient.GetTriggeringGeofences(intent);
                if (geofences == null || geofences.Count <= 0) return;
                var requestId = geofences[0].RequestId;

                var dbManager = new DBManager();
                var alarm = dbManager.GetAlarmByGeofenceRequestId(requestId);

                if (alarm == null) return;

                StartActivity(intent.SetClass(this, typeof (AlarmScreen))
                    .AddFlags(ActivityFlags.NewTask)
                    .PutExtra(Constants.AlarmsData_Extra, JsonConvert.SerializeObject(alarm)));
                StartService(new Intent(this, typeof (UIWhileRingingIntentService))
                    .SetAction(UIWhileRingingIntentService.StartAlarmAction)
                    .PutExtra(Constants.AlarmsData_Extra, JsonConvert.SerializeObject(alarm)));
            }
        }
		public override void OnReceive (Context context, Intent intent)
		{
			Log.Debug ("PhoneBootedBroadcastReceiver", "ActionBootCompleted received");

			var activeAlarms = new DBManager ().GetAll ().Where (alarm => alarm.Enabled).ToList ();

			if (activeAlarms != null && activeAlarms.Count > 0) {
				context.StartService (new Intent (context, typeof(RestoreAfterRebootService)));
			}
		}
		void RestoreGeofences ()
		{
			_dbManager = new DBManager ();
			_activeAlarms = _dbManager.GetAll ().Where (alarm => alarm.Enabled).ToList ();
			_dbManager.EnableAlarms (_activeAlarms, false);

			_geofenceManager = new GeofenceManager ();
			_geofenceManager.Error += (sender, e) => AnyError ();
			_geofenceManager.Started += HandleStarted;
			_geofenceManager.FailedToStart += (sender, e) => AnyError ();
			_geofenceManager.FailedToStartWithResolution += (sender, e) => AnyError ();
			_geofenceManager.Stoped += HandleStoped;
			_geofenceManager.GeofenceAdded += HandleGeofenceAdded;

			_geofenceManager.Start ();
		}
		public override void OnDestroy ()
		{
			Log.Debug (TAG, "OnDestroy");

			if (_geofenceManager != null) {
				_geofenceManager.GeofenceAdded -= HandleGeofenceAdded;
				_geofenceManager.Stoped -= HandleStoped;
				_geofenceManager.Started -= HandleStarted;

				_geofenceManager = null;
			}

			_dbManager = null;

			base.OnDestroy ();
		}