public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) { if (intent.Action.Equals(Constants.ACTION_START_SERVICE)) { if (isStarted) { Log.Info(TAG, "OnStartCommand: The service is already running."); } else { Log.Info(TAG, "OnStartCommand: The service is starting."); RegisterForegroundService(); handler.PostDelayed(runnable, Constants.DELAY_BETWEEN_LOG_MESSAGES); isStarted = true; } } else if (intent.Action.Equals(Constants.ACTION_STOP_SERVICE)) { Log.Info(TAG, "OnStartCommand: The service is stopping."); timestamper = null; StopForeground(true); StopSelf(); isStarted = false; } else if (intent.Action.Equals(Constants.ACTION_RESTART_TIMER)) { Log.Info(TAG, "OnStartCommand: Restarting the timer."); timestamper.Restart(); } // This tells Android not to restart the service if it is killed to reclaim resources. return StartCommandResult.Sticky; }
public override void OnCreate() { base.OnCreate(); Log.Info(TAG, "OnCreate: the service is initializing."); timestamper = new UtcTimestamper(); handler = new Handler(); // This Action is only for demonstration purposes. runnable = new Action(() => { if (timestamper == null) { Log.Wtf(TAG, "Why isn't there a Timestamper initialized?"); } else { string msg = timestamper.GetFormattedTimestamp(); Log.Debug(TAG, msg); Intent i = new Intent(Constants.NOTIFICATION_BROADCAST_ACTION); i.PutExtra(Constants.BROADCAST_MESSAGE_KEY, msg); Android.Support.V4.Content.LocalBroadcastManager.GetInstance(this).SendBroadcast(i); handler.PostDelayed(runnable, Constants.DELAY_BETWEEN_LOG_MESSAGES); } }); }
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) { if (intent.Action.Equals(Constants.ACTION_START_SERVICE)) { if (isStarted) { Log.Info(TAG, "OnStartCommand: The service is already running."); } else { Log.Info(TAG, "OnStartCommand: The service is starting."); RegisterForegroundService(); handler.PostDelayed(runnable, Constants.DELAY_BETWEEN_LOG_MESSAGES); isStarted = true; } } else if (intent.Action.Equals(Constants.ACTION_STOP_SERVICE)) { Log.Info(TAG, "OnStartCommand: The service is stopping."); timestamper = null; StopForeground(true); StopSelf(); isStarted = false; } else if (intent.Action.Equals(Constants.ACTION_RESTART_TIMER)) { Log.Info(TAG, "OnStartCommand: Restarting the timer."); timestamper.Restart(); } // This tells Android not to restart the service if it is killed to reclaim resources. return(StartCommandResult.Sticky); }
public override void OnDestroy() { // We need to shut things down. Log.Debug(TAG, GetFormattedTimestamp() ?? "The TimeStamper has been disposed."); Log.Info(TAG, "OnDestroy: The started service is shutting down."); // Stop the handler. handler.RemoveCallbacks(runnable); // Remove the notification from the status bar. var notificationManager = (NotificationManager)GetSystemService(NotificationService); notificationManager.Cancel(Constants.SERVICE_RUNNING_NOTIFICATION_ID); timestamper = null; isStarted = false; base.OnDestroy(); }