protected override void OnResume()
        {
            base.OnResume();
            AddFlags();
            watchDog.Elapsed += WatchdogInterval_Elapsed;
            watchDog.Stop();
            watchDog.Start();
            OnActivityStateChanged?.Invoke(null, new LockScreenLifecycleEventArgs {
                State = ActivityStates.Resumed
            });
            if (configurationManager.RetrieveAValue(ConfigurationParameters.TutorialRead) == false)
            {
                welcome            = FindViewById <TextView>(Resource.Id.welcomeoverlay);
                welcome.Text       = Resources.GetString(Resource.String.tutorialtext);
                welcome.Visibility = ViewStates.Visible;
                welcome.Touch     += Welcome_Touch;
            }
            if (configurationManager.RetrieveAValue(ConfigurationParameters.MusicWidgetEnabled))
            {
                if (Build.VERSION.SdkInt > BuildVersionCodes.KitkatWatch)
                {
                    MusicController.MusicPlaying += MusicController_MusicPlaying;
                    MusicController.MusicPaused  += MusicController_MusicPaused;
                }
                else
                {
                    MusicControllerKitkat.MusicPlaying += MusicControllerKitkat_MusicPlaying;
                    MusicControllerKitkat.MusicPaused  += MusicControllerKitkat_MusicPaused;
                }
            }
            else
            {
                StopMusicController();
                StopFloatingNotificationService();
            }
            if (isMusicWidgetPresent) //It'll always be true(?) (What's this field for)? //Regression test!
            {
                CheckIfMusicIsStillPaused();
            }
            //Check if Awake is enabled.

            switch (AwakeService.GetAwakeStatus())
            {
            case AwakeStatus.Up:
                livedisplayinfo.Text = "Awake is Active";
                break;

            case AwakeStatus.Sleeping:
                livedisplayinfo.Text = "Awake is not Active (I'm sleeping)";
                break;

            case AwakeStatus.UpWithDeviceMotionDisabled:
                livedisplayinfo.Text = "Awake is more or less Active";
                break;

            default:
                break;
            }
        }
 protected override void OnPause()
 {
     base.OnPause();
     watchDog.Stop();
     watchDog.Elapsed -= WatchdogInterval_Elapsed;
     OnActivityStateChanged?.Invoke(null, new LockScreenLifecycleEventArgs {
         State = ActivityStates.Paused
     });
     if (Build.VERSION.SdkInt > BuildVersionCodes.KitkatWatch)
     {
         MusicController.MusicPlaying -= MusicController_MusicPlaying;
         MusicController.MusicPaused  -= MusicController_MusicPaused;
     }
     else
     {
         MusicControllerKitkat.MusicPlaying -= MusicControllerKitkat_MusicPlaying;
         MusicControllerKitkat.MusicPaused  -= MusicControllerKitkat_MusicPaused;
     }
     GC.Collect();
 }
        protected override void OnDestroy()
        {
            base.OnDestroy();
            OnActivityStateChanged?.Invoke(null, new LockScreenLifecycleEventArgs {
                State = ActivityStates.Destroyed
            });
            //Unbind events

            OnActivityStateChanged -= LockScreenActivity_OnActivityStateChanged;
            //unlocker.Touch -= Unlocker_Touch;
            clearAll.Click -= BtnClearAll_Click;
            WallpaperPublisher.NewWallpaperIssued     -= Wallpaper_NewWallpaperIssued;
            CatcherHelper.NotificationListSizeChanged -= CatcherHelper_NotificationListSizeChanged;
            lockscreen.Touch -= Lockscreen_Touch;

            watchDog.Stop();
            watchDog.Elapsed -= WatchdogInterval_Elapsed;
            watchDog.Dispose();
            //Dispose Views
            //Views
            recycler.Dispose();
            //unlocker.Dispose();
            clearAll.Dispose();
            lockscreen.Dispose();
            //wallpaperView.Background?.Dispose();
            //wallpaperView = null;

            viewPropertyAnimator.Dispose();

            //Dispose Fragments
            notificationFragment.Dispose();
            musicFragment.Dispose();
            clockFragment.Dispose();
            weatherFragment.Dispose();
            livedisplayinfo?.Dispose();
        }