Foreground Services4:21 with Ben Deitch
In this video we’ll learn about foreground Services and how to use them!
When you play music on your phone, it's typically accompanied by a notification. 0:00 This notification usually tells you what song is playing and 0:05 provides some basic functionality, like play and pause. 0:09 But this notification also serves another purpose. 0:12 If you want your service to run in the foreground, 0:16 then you need to have a notification. 0:19 A foreground service is a service that the user is actively aware of. 0:21 Thus a foreground service is given special priority 0:25 when Android encounters low memory situations. 0:29 Remember the various levels of importance for processes? 0:32 Well, when we designate our service as a foreground service, 0:36 it's automatically part of the top group, foreground processes. 0:39 And it's extremely unlikely that our services process will be killed. 0:44 To make our service a foreground service, all we need to do is call start 0:48 foreground from our service and provide a notification along with an id. 0:53 Let's see how to do that. 0:57 Let's start mPlayerService by creating 0:59 a notification.builder object at the top of OnStart command. 1:03 Notification.Builder and let's call it notificationBuilder and 1:08 set it equal to new Notification.Builder, 1:16 and pass in this for the context. 1:21 Next let's call setSmallIcon on our builder 1:26 and pass in R.mipmap.ic_launcher 1:33 to set our notifications icon to be the default icon included in our app. 1:38 Then let's create a new notification, Notification, and 1:44 we'll call it notification and 1:48 set it equal to notificationBuilder.build. 1:52 Next let's call startForeground and pass an 11 for 1:57 the first parameter and our notification for the second. 2:01 The first parameter is an id that we choose, 2:06 we just need to not reuse notification ids in the same app. 2:09 Since this is our only notification, we'll be fine just picking any random number, 2:14 like 11, just don't pick zero, that's not allowed. 2:19 Lastly, if the music is done playing we can stop running in the foreground. 2:23 Let's call stopForeground right below stopSelf and 2:29 pass in true to make sure that we remove the notification. 2:33 And that's it, that's all you need to do to run your service in the foreground. 2:39 If we were making a more finished product, 2:44 we might want to add some buttons to our notification and update our app icon. 2:46 But we're not, so let's go ahead and test the app and 2:51 see what a foreground service looks like. 2:54 But before we get to testing, 3:00 it looks like there's an error with this call to build. 3:02 It looks like this call requires API 16 but 3:08 our current min is 15, down here at the bottom left. 3:12 Let's open our app's build.gradle file to fix this. 3:17 And set minSdkversion to 16, and then sync now. 3:27 And if we go back to player service, no more errors. 3:34 Let's get back to testing the app. 3:39 And if we play the music, there's our notification. 3:48 And if we quit the activity, the notification is still there. 3:54 And if we wait for the song to end, 4:00 we could even watch our notification disappear because the service was stopped, 4:02 and it triggers the stop foreground method. 4:07 Fantastic work. 4:09 This is definitely some of the most difficult material in Android, 4:11 and you should be extremely proud for finishing this course. 4:15 Keep practicing and I'll see you soon. 4:19
You need to sign up for Treehouse in order to download course files.Sign up